Csharp/C Sharp/Security/PrincipalPermission

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Demand PrincipalPermission

<source lang="csharp"> using System; using System.Security; using System.Security.Principal; using System.Security.Permissions;

class Class1 {

   static void Main(string[] args) {
       //AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
       WindowsIdentity wi = WindowsIdentity.GetCurrent();
       PrincipalPermission PrincipalPerm = new PrincipalPermission(wi.Name, "Administrator");
       try {
           PrincipalPerm.Demand();
           Console.WriteLine("Code demand for an administrator succeeded.");
       } catch (SecurityException e) {
           Console.WriteLine("Demand for administrator failed!");
           Console.WriteLine(e.Message);
       }
   }

}

</source>


new PrincipalPermission(null, @"MACHINE\Managers")

<source lang="csharp"> using System; using System.Security.Permissions; class MainClass {

   public static void Method1() {
       PrincipalPermission perm = new PrincipalPermission(@"MACHINE\Tester", null);
       perm.Demand();
   }

}

</source>


Union two PrincipalPermissions

<source lang="csharp"> using System; using System.Security.Permissions; class MainClass {

   public static void Method2() {
       PrincipalPermission perm1 = new PrincipalPermission(null, @"MACHINE\Managers");
       PrincipalPermission perm2 = new PrincipalPermission(null, @"MACHINE\Developers");
       perm1.Union(perm2).Demand();
   }
   public static void Method3() {
       PrincipalPermission perm = new PrincipalPermission(@"MACHINE\Tester", @"MACHINE\Managers");
       perm.Demand();
   }
   [PrincipalPermission(SecurityAction.Demand, Name = @"MACHINE\Tester")]
   public static void Method4() {
   }
   [PrincipalPermission(SecurityAction.Demand, Role = @"MACHINE\Managers")]
   [PrincipalPermission(SecurityAction.Demand, Role = @"MACHINE\Developers")]
   public static void Method5() {
       // Method implementation. . .
   }
   [PrincipalPermission(SecurityAction.Demand, Name = @"MACHINE\Tester",
       Role = @"MACHINE\Managers")]
   public static void Method6() {
       // Method implementation. . .
   }

}

</source>