Nažalost, Mrav-e, to ne rešava problem. Iako će CurrentPrincipal pokazivati na tvoj generic principal, to neće imati nikakvog uticaja na security limite koji su postavljani od strane Windows-a. Realno, laički, pogledaj kod i primetićeš da nigde nema lozinke, dakle kad bi to moglo ovako, .net aplikacija bi mogla sebi da dodeli administratorske privilegije i da vršlja po OSu

. Zbog takvih bezobraznih namera Windows priznaje samo svoj mehanizam security token-a a jedini način da se dođe do tokena je preko API funkcije LogonUser:
Code:
[DllImport("advapi32.dll", SetLastError=true)]
public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword,
int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
phToken će imati handle na security token korisnika i taj isti handle se može iskoristiti da se kreira .net WindowsIdentity principal, koji ima metod Impersonate koji mu omogućava da privremeno promeni secuirty token trenutnog thread-a unutar samog OS-a.
Code:
WindowsIdentity newId = new WindowsIdentity(tokenHandle);
WindowsImpersonationContext impersonatedUser = newId.Impersonate();
WindowsImpersonationContext koji se vrati je u stvari "stari" korisnik i pozivom Undo metode stvari se vraćaju na mesto:
Code:
impersonatedUser.Undo();
Sve OS operacije između Impersionate() i Undo() će raditi pod accountom "drugog" korisnika.
Zakačen je ceo kod (prerađen sample iz MSDNa), pa povadite šta vam treba...
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić