2004-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / corlib / System.Security.Permissions / RegistryPermissionAttribute.cs
1 //
2 // System.Security.Permissions.RegistryPermissionAttribute.cs
3 //
4 // Authors
5 //      Duncan Mak <duncan@ximian.com>
6 //      Sebastien Pouliot <spouliot@motus.com>
7 //
8 // (C) 2002 Ximian, Inc. http://www.ximian.com
9 // Portions Copyright (C) 2003 Motus Technologies (http://www.motus.com)
10 //
11
12 using System;
13
14 namespace System.Security.Permissions {
15
16         [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
17                          AttributeTargets.Struct | AttributeTargets.Constructor |
18                          AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
19         [Serializable]
20         public sealed class RegistryPermissionAttribute : CodeAccessSecurityAttribute {
21
22                 // Fields
23                 private string create;
24                 private string read;
25                 private string write;
26                        
27                 // Constructor
28                 public RegistryPermissionAttribute (SecurityAction action) : base (action) {}
29                 
30                 // Properties
31                 public string All
32                 {
33 #if ! NET_1_0
34                         get { throw new NotSupportedException ("All"); }
35 #endif
36                         set { 
37                                 create = value; 
38                                 read = value;
39                                 write = value;
40                         }
41                 }
42                 
43                 public string Create
44                 {
45                         get { return create; }
46                         set { create = value; }
47                 }
48
49                 public string Read
50                 { 
51                         get { return read; }
52                         set { read = value; }
53                 }
54
55                 public string Write
56                 {
57                         get { return write; }
58                         set { write = value; }
59                 }
60
61                 // Methods
62                 public override IPermission CreatePermission ()
63                 {
64                         RegistryPermission perm = null;
65                         if (this.Unrestricted)
66                                 perm = new RegistryPermission (PermissionState.Unrestricted);
67                         else {
68                                 perm = new RegistryPermission (PermissionState.None);
69                                 if (create != null)
70                                         perm.AddPathList (RegistryPermissionAccess.Create, create);
71                                 if (read != null)
72                                         perm.AddPathList (RegistryPermissionAccess.Read, read);
73                                 if (write != null)
74                                         perm.AddPathList (RegistryPermissionAccess.Write, write);
75                         }
76                         return perm;
77                 }
78         }
79 }