openprocesstoken eines prozess eines anderen benutzers



  • 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.


Anmelden zum Antworten