Csharp/C Sharp/Security/PrincipalPermission
Demand PrincipalPermission
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);
}
}
}
new PrincipalPermission(null, @"MACHINE\Managers")
using System;
using System.Security.Permissions;
class MainClass {
public static void Method1() {
PrincipalPermission perm = new PrincipalPermission(@"MACHINE\Tester", null);
perm.Demand();
}
}
Union two PrincipalPermissions
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. . .
}
}