OpenProcessToken(...) liefert ungültiges Handle
-
Hallo,
ich habe das Problem dass mir OpenProcessToken ein ungültiges Handle liefert. Hier mein Code:
HANDLE tokenHandle; if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &tokenHandle)) { LUID luid; if(LookupPrivilegeValue(NULL, SE_TCB_NAME, &luid)) { TOKEN_PRIVILEGES privilegeToken; privilegeToken.PrivilegeCount = 1; privilegeToken.Privileges[0].Luid = luid; privilegeToken.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if(!AdjustTokenPrivileges(&tokenHandle, false, &privilegeToken, NULL, NULL, NULL)) { // ... } } }Das Programm läuft super durch bis zu AdjustTokenPrivileges, dann kriege ich wenn ich GetLastError aufrufe die Meldung dass das Token Handle ungültig ist.
Ich kann leider keinen Fehler erkennen
Danke schonmal,
max
-
blub² schrieb:
Das Programm läuft super durch bis zu AdjustTokenPrivileges, dann kriege ich wenn ich GetLastError aufrufe die Meldung dass das Token Handle ungültig ist.
Gut, dass Du das noch gesagt hast. Sonst hätte ich den Fehler sicherlich übersehen.

Du übergibst gar nicht das Handle, sondern einen Zeiger auf das Handle. Entferne mal das "&".
BTW: Der Compiler gibt Dir tatsächlich keine Meldung?
-
Vielen Dank! Funktioniert alles

Nein, mein Compiler hat keinen Fehler gebracht (BCB2007).
Noch eine OT Frage: warum habe ich mit dem "SE_TCB_NAME" Privileg zumindest teilweise weniger Privilegien wie mit dem "SE_DEBUG_NAME" Privileg? Ich persönlich brauche dass ganze für einen kleinen TaskManager mit dem ich Kontrolle über alle Prozesse haben will (eigene, nix bösartiges ;)). Mit dem SE_TCB_NAME Privileg, was mich ja eigentlich als "System" handeln lässt kann ich Prozesse wie winlogon.exe und svchost.exe nicht abschiessen, mit SE_DEBUG_NAME gehts.
Max