Csharp/C Sharp by API/System.Security.Permissions/FileIOPermissionAccess

Материал из .Net Framework эксперт
Версия от 15:11, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

FileIOPermissionAccess.AllAccess

<source lang="csharp"> using System; using System.Collections.Generic; using System.Text; using System.Security; using System.Security.Permissions; class Program {

   static void Main(string[] args) {
       CodeAccessPermission permissionA = new FileIOPermission(FileIOPermissionAccess.AllAccess, @"C:\");
       CodeAccessPermission permissionB = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\temp");
       if (permissionB.IsSubsetOf(permissionA)) {
           Console.WriteLine("PermissionB is a subset of PermissionA");
       } else {
           Console.WriteLine("PermissionB is NOT a subset of PermissionA");
       }
   }

}


 </source>


FileIOPermissionAccess.Append

<source lang="csharp"> using System; using System.Collections.Generic; using System.Text; using System.Security; using System.Security.Permissions; using System.IO; class Program {

   static void Main(string[] args) {
       CodeAccessPermission permission = new FileIOPermission(FileIOPermissionAccess.Append,@"C:\audit.txt");
       permission.Deny();
       AuditClass.Save("some data to audit");
       CodeAccessPermission.RevertDeny();
   }

} class AuditClass {

   public static void Save(string value) {
       try {
           FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Append,@"C:\audit.txt");
           permission.Assert();
           FileStream stream = new FileStream(@"C:\audit.txt",FileMode.Append, FileAccess.Write);
           CodeAccessPermission.RevertAssert();
           Console.WriteLine("Data written to audit file");
       } catch {
           Console.WriteLine("Failed to write data to audit file");
       }
   }

}


 </source>


FileIOPermissionAccess.Read

<source lang="csharp">

using System; using System.Collections.Generic; using System.IO; using System.IO.IsolatedStorage; using System.Net; using System.Net.Sockets; using System.Reflection; using System.Security; using System.Security.AccessControl; using System.Security.Policy; using System.Security.Permissions; using System.Security.Principal; using System.Text; public class MainClass {

   public static void Main()
   {
       AppDomain sandboxAd;
       Evidence ev = new Evidence();
       ev.AddAssembly(Assembly.GetExecutingAssembly());
       PermissionSet permSet = new PermissionSet(PermissionState.None);
       permSet.AddPermission(new SecurityPermission(PermissionState.Unrestricted));
       permSet.AddPermission(new FileIOPermission(PermissionState.Unrestricted));
       sandboxAd = AppDomain.CreateDomain("Sandbox", ev, new AppDomainSetup(), permSet);
       sandboxAd.DoCallBack(SecureOperationImperative);
   }
   private static void SecureOperationImperative()
   {
       FileIOPermission p = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\");
       p.Demand();
   }

}


 </source>


FileIOPermissionAccess.Write

<source lang="csharp">

using System; using System.Net; using System.Security.Permissions;

[assembly: ReflectionPermission(SecurityAction.RequestRefuse, Unrestricted = true)] class MainClass {

   public static void Main()
   {
       FileIOPermission fileIOPerm = new FileIOPermission(FileIOPermissionAccess.Write, @"C:\Data");
       fileIOPerm.Demand();
   }

}


 </source>