如何使用本地API在另一个使用进程句柄或PID的进程上获得在Windows上工作的目录? 我看过程和线程函数 , PSAPI函数并没有find。 也许WMI?
另外,关于这些主题, PSAPI如何与进程和线程function相关 ? 它过时了吗?
你需要比PSAPI更重的火炮。 下面是如何做(假设x86,错误处理省略):
ProcessBasicInformation pbi ; RTL_USER_PROCESS_PARAMETERS upp ; PEB peb ; DWORD len ; HANDLE handle = OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid) ; NtQueryInformationProcess (handle, 0 /*ProcessBasicInformation*/, &pbi, sizeof (ProcessBasicInformation), &len) ; ReadProcessMemory (handle, pbi.PebBaseAddress, &peb, sizeof (PEB), &len) ; ReadProcessMemory (handle, peb.ProcessParameters, &upp, sizeof (RTL_USER_PROCESS_PARAMETERS), &len) ; WCHAR path = new WCHAR[upp.CurrentDirectoryPath.Length / 2 + 1] ; ReadProcessMemory (handle, upp.CurrentDirectoryPath.Buffer, path, upp.CurrentDirectoryPath.Length, &len) ; // null-terminate path[upp.CurrentDirectoryPath.Length / 2] = 0 ;
请注意,除非进程被暂停,否则这种方法包含一场竞赛。
"."
始终是当前目录。 我认为这将起作用。