B
Hallo zusammen !
Habe folgendes problem.
Ich möchte die funktion : OpenProcessToken(hprocess,accessrights,&htoken); ausführen.
Ich bekomme aber immer eine errorcode 5 (access_denied).
Ich habe den hprocess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,intPID);
erfolgreich öffnen können da ich den aktuellen process das "SE_DEBUG_PRIVILEGE" aktiviert habe.
verstehe aber jetzt nicht warum ich das nicht kann/darf.
Ist der Processowner der gleiche, dann funktioniert das ganze einwandfrei.
Bin natürlich lokaler administrator und habe die security policy von winxp erweitert mit : Einsetzen als Teil des Betriebssystems
Anpassen von Speicherkontingenten für einen Prozess
Ersetzen eines tokenobjekts auf prozessebene
Erstellen eines Tokenobjekts
Muss ich noch zusätzliche privilegien auf den aktuellen prozess setzen oder mach ich was anderes falsch ?
code-snip
// hier wird das debug_privileg auf den aktuellen prozess gesetzt
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &tokenHandle);
LookupPrivilegeValue(0, SE_DEBUG_NAME, &privilegeToken.Privileges[0].Luid);
privilegeToken.PrivilegeCount = 1;
privilegeToken.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(tokenHandle, 0, &privilegeToken, sizeof(TOKEN_PRIVILEGES), 0, 0);
CloseHandle(tokenHandle);
//Openprocess funktioniert wg. dem debug_privileg auch auf prozessen anderer benutzer
hprocess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,intPID);
dwLastError = GetLastError();
printf("ErrorCode f. OpenProcess : %i\n",dwLastError);
// Hier bekomme ich die error 5 meldung
intResult = OpenProcessToken(hprocess,TOKEN_QUERY,&haccesstoken);
dwLastError = GetLastError();
printf("ErrorCode f. OpenProcessToken: %i\n",dwLastError);
(verwende visualstudio 2008 auf winxp sp3.
habe noch nicht die möglichkeit gehabt es auf anderen systemen zu testen.