C++ Windows - How to get process path from its PID

后端 未结 5 2291
挽巷
挽巷 2020-11-29 04:26

How can I retrieve a process\'s fully-qualified path from its PID using C++ on Windows?

5条回答
  •  没有蜡笔的小新
    2020-11-29 04:57

    Call OpenProcess to get a handle to the process associated with your PID. Once you have a handle to the process, call GetModuleFileNameEx to get its fully-qualified path. Don't forget to call CloseHandle when you're finished using the process handle.

    Here's a sample program that performs the required calls (replace 1234 with your PID):

    #include 
    #include  // For access to GetModuleFileNameEx
    #include 
    
    #include 
    
    using namespace std;
    
    #ifdef _UNICODE
      #define tcout wcout
      #define tcerr wcerr
    #else
      #define tcout cout
      #define tcerr cerr
    #endif
    
    int _tmain(int argc, TCHAR * argv[])
    {
      HANDLE processHandle = NULL;
      TCHAR filename[MAX_PATH];
    
      processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, 1234);
      if (processHandle != NULL) {
        if (GetModuleFileNameEx(processHandle, NULL, filename, MAX_PATH) == 0) {
          tcerr << "Failed to get module filename." << endl;
        } else {
          tcout << "Module filename is: " << filename << endl;
        }
        CloseHandle(processHandle);
      } else {
        tcerr << "Failed to open process." << endl;
      }
    
      return 0;
    }
    

提交回复
热议问题