2013-09-27 21 views
6

W systemie Windows Vista i nowszym LogonUser zwraca nieuprzywilejowany token, nawet jeśli podany użytkownik jest administratorem. Tak więc, kiedy podszywasz się za używanie tokena, nie jesteś podniesiony. Podając poprawną nazwę użytkownika i hasło dla administratora, w jaki sposób uruchomić kod, który ma podwyższone uprawnienia dla tego administratora?Biorąc pod uwagę nazwę użytkownika i hasło, w jaki sposób podszywać się pod tego użytkownika?

+0

Czy chcesz podszyć się pod konto AD lub konto lokalne? – Botonomous

+1

Active Directory, przede wszystkim - ale jeśli działa również na poziomie lokalnym, byłoby świetnie! –

Odpowiedz

0

Jeśli piszesz usługa systemu Windows, używając LOGON32_LOGON_SERVICE zamiast LOGON32_LOGON_INTERACTIVE lub LOGON32_LOGON_NEW_CREDENTIALS spowoduje uprzywilejowany token, o ile użytkownik podszywający się ma uprawnienia "loguj się jako usługa".

Nie zapewnia to ogólnego rozwiązania (nie zadziała, jeśli piszesz aplikację skierowaną do użytkownika), ale wystarcza do rozwiązania konkretnego problemu, który miałem.

1

Po prostu pracowałem z this example, to faktycznie działa dobrze. Myślę, że jeśli chcesz uruchomić kod w tym kontekście trzeba będzie ustawić aktualny wątek zobowiązanemu przez:

Thread.CurrentPrincipal = new System.Security.Principal.WindowsPrincipal(WindowsIdentity.GetCurrent()); 
Powiązane problemy