using System; using System.Security; using System.Security.Principal; using System.Threading; class Starter { static private PrincipalPolicy policy; public static void Main() { policy=PrincipalPolicy.WindowsPrincipal; Thread t=new Thread(new ThreadStart(SetPolicy)); t.Start(); t.Join(); policy=PrincipalPolicy.UnauthenticatedPrincipal; t=new Thread(new ThreadStart(SetPolicy)); t.Start(); t.Join(); policy=PrincipalPolicy.NoPrincipal; t=new Thread(new ThreadStart(SetPolicy)); t.Start(); } static public void SetPolicy() { string principal; Thread.GetDomain().SetPrincipalPolicy(policy); IPrincipal p=Thread.CurrentPrincipal; if(p is WindowsPrincipal) principal="Windows Principal"; else if(p is GenericPrincipal) principal="Generic Principal"; else principal="No principal"; Console.WriteLine("\n"+principal); if(p!=null) Console.WriteLine("Identity name: "+p.Identity.Name); else Console.WriteLine("No principal object"); } }