2013-02-20 62 views
1

我在程序中列出進程名稱。首先我使用「EnumProcesses」來獲得所有的PID。然後我得到這樣的進程名稱:通過Win7中的pid獲取進程信息

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid); 
if(hProcess) { 
    EnumProcessModules(hProcess, &hModule, sizeof(hModule), NULL); 
    GetModuleFileNameExW(hProcess, hModule, (LPWSTR)fileName, 100*sizeof(wchar_t)); 

    printf ("[%d] 0x%08X %d - %ws \n", i, hProcess, pid, fileName); 
} 

我可以在winxp中獲得所有進程。但是,在Win7中,某些進程的句柄是NULL,因此我無法獲取它的信息。像這樣:

enter image description here

我不知道爲什麼。誰能告訴我爲什麼?謝謝。

回答

3

要麼權限(你需要SEDebugPrivilege枚舉所有的)或你想從32位進程

+0

謝謝,約翰尼·鮑林枚舉64個進程。 – wenz 2013-02-21 01:47:37

+0

如果這很有用,請將其作爲答案(點擊答案左側的綠色「V」號) – 2013-04-02 11:18:27