Rechte eines Prozesses herausfinden
-
Wie kann ich herausfinden welche Rechte (also z.B. Admin oder nicht) mein Prozess besitzt?
-
...
-
ok habe es jetzt mit
GetTokenInformation()
hinbekommen, aber noch eine frage:ich lese momentan die
TOKEN_ELEVATION
Struktur aus, da heißt es in der Dokumentation:Members TokenIsElevated A nonzero value if the token has elevated privileges; otherwise, a zero value.
momentan ist
TokenIsElevated
immer 0, egal ob ich das programm mit admin-rechten ausführe, oder nicht. die funktion selber wird erfolgreich ausgeführt.woran kann das liegen?
ausschnitt von meinem code:
bool ret; HANDLE token; if ( OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token) ) { TOKEN_ELEVATION elevation; DWORD cbSize = sizeof(TOKEN_ELEVATION); if( GetTokenInformation(token, TokenElevation, &elevation, sizeof(elevation), &cbSize) ) { ret = elevation.TokenIsElevated; } }
-
Was verstehst Du unter "Mit Admin Rechten ausführen"?
Du musst schon in Deinem prozess das "ReqiereAdiminstrator"-Manifest haben! Oder den prozess via Rechts-Klick und dann "Start As Administrator" ausführen...
-
Oder den prozess via Rechts-Klick und dann "Start As Administrator" ausführen...
genau das habe ich getan. davon abgesehen hat mein nutzerkonto ohnehin adminrechte.
-
Bei UAC verhält sich das anders. Da hast Du trotzdem keine Adminrechte, auch wenn Du in der Gruppe der Administratoren bist...
-
Siehe hier für eine passende Implementierung:
http://www.davidmoore.info/2011/06/20/how-to-check-if-the-current-user-is-an-administrator-even-if-uac-is-on/