OpenProcess / QueryFullProcessImageName INVALID_HANDLE_VALUE



  • Hi,

    ich öffne einen laufenden Prozess mit OpenProcess().
    Bei manchen Images wie bspw. svchost.exe liefert GetLastError nach dem Aufruf von QueryFullProcessImageName INVALID_HANDLE_VALUE zurück.

    Die Frage ist, wie kann das Handle INVALID sein, wenn es das bei OpenProcess noch nicht war?

    [cpp]
    HANDLE processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | SYNCHRONIZE, false, pid);

    wchar_t *buffer = new wchar_t[ MAX_PATH + 100 ];
    DWORD size = MAX_PATH + 100;
    if( processHandle != INVALID_HANDLE_VALUE )
    {
    if( !QueryFullProcessImageName( processHandle, 0x00, imagename, &size ) )
    {
    int err = GetLastError();
    // err --> INVALID_HANDLE_VALUE
    }
    }
    delete[] buffer;



  • Sorry cpp end tag vergessen:

    HANDLE processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | SYNCHRONIZE, false, pid);
    
    wchar_t *buffer = new wchar_t[ MAX_PATH + 100 ];
    DWORD size = MAX_PATH + 100;
    if( processHandle != INVALID_HANDLE_VALUE )
    {
    if( !QueryFullProcessImageName( processHandle, 0x00, imagename, &size ) )
    {
    int err = GetLastError();
    // err --> INVALID_HANDLE_VALUE
    }
    }
    delete[] buffer;
    


  • Vermutlich hast Du zu wenig Berechtigungen...



  • Zu wenig Berechtigungen würden 0x5 - ERROR_NO_ACCESS geben.
    Mein Fehler ist, dass ich auf INVALID_HANDLE_VALUE und nicht auf NULL prüfe.

    Gerade entdeckt. Greetz.


Anmelden zum Antworten