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