1 //------------------------------------------------------------------------------
2 // <copyright file="EventLogPermissionAttribute.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //------------------------------------------------------------------------------
6 
7 namespace System.Diagnostics {
8     using System.ComponentModel;
9     using System.Security;
10     using System.Security.Permissions;
11 
12     [
13     AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Assembly | AttributeTargets.Event, AllowMultiple = true, Inherited = false ),
14     Serializable()
15     ]
16     public class EventLogPermissionAttribute : CodeAccessSecurityAttribute {
17         private string machineName;
18         private EventLogPermissionAccess permissionAccess;
19 
EventLogPermissionAttribute(SecurityAction action)20         public EventLogPermissionAttribute(SecurityAction action)
21         : base(action) {
22             this.machineName = ".";
23             this.permissionAccess = EventLogPermissionAccess.Write;
24         }
25 
26         public string MachineName {
27             get {
28                 return this.machineName;
29             }
30 
31             set {
32                 if (!SyntaxCheck.CheckMachineName(value))
33                     throw new ArgumentException(SR.GetString(SR.InvalidProperty, "MachineName", value));
34 
35                 this.machineName = value;
36             }
37         }
38 
39         public EventLogPermissionAccess PermissionAccess {
40             get {
41                 return this.permissionAccess;
42             }
43 
44             set {
45                 this.permissionAccess = value;
46             }
47         }
48 
CreatePermission()49         public override IPermission CreatePermission() {
50              if (Unrestricted)
51                 return new EventLogPermission(PermissionState.Unrestricted);
52 
53             return new EventLogPermission(this.PermissionAccess, this.MachineName);
54 
55         }
56     }
57 }
58 
59