我使用下面的代碼來確定前臺窗口並找到創建它的.exe文件的路徑。發現python中所有窗口的exe路徑
hwnd = win32gui.GetForegroundWindow()
_, pid = win32process.GetWindowThreadProcessId(hwnd)
hndl = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, 0, pid)
path = win32process.GetModuleFileNameEx(hndl, 0)
print path
這workd對諸如谷歌Chrome,PyCharm,Filezilla的等窗口,但行
path = win32process.GetModuleFileNameEx(hndl, 0)
拋出錯誤
pywintypes.error: (299, 'GetModuleFileNameEx', 'Only part of a ReadProcessMemory or WriteProcessMemory request was completed.')
的Windows資源管理器,計算器,命令提示符等
我相對較新的編碼和python和不能找出爲什麼這是這種情況,還有什麼區別。
自引入受保護進程以來,首選使用'PROCESS_QUERY_LIMITED_INFORMATION'和'QueryFullProcessImageName'。即使管理員啓用了「SeDebugPrivilege」,系統也不會授予PROCESS_QUERY_INFORMATION訪問受保護的進程的權限。這也應該可以用來從WOW64進程中查詢一個本地的64位進程。 – eryksun