From 447069df32e96777206f6bac05b841c03f9a7ace Mon Sep 17 00:00:00 2001 From: clement rouault Date: Mon, 7 Feb 2022 17:10:54 +0100 Subject: [PATCH] Process listing now use Wide API (process name is still temporary a ascii string with backslashreplace) --- windows/winobject/process.py | 4 ++-- windows/winobject/system.py | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/windows/winobject/process.py b/windows/winobject/process.py index 88d0e8b..7ecab97 100644 --- a/windows/winobject/process.py +++ b/windows/winobject/process.py @@ -973,8 +973,8 @@ class WinProcess(Process): @classmethod def _from_PROCESSENTRY32(cls, entry): - #print("_from_PROCESSENTRY32") - name = entry.szExeFile.decode() + # Temporary encoded name + name = entry.szExeFile.encode(errors="backslashreplace") pid = entry.th32ProcessID ppid = entry.th32ParentProcessID return cls(pid=pid, name=name, ppid=ppid) diff --git a/windows/winobject/system.py b/windows/winobject/system.py index 276c455..c5105ec 100644 --- a/windows/winobject/system.py +++ b/windows/winobject/system.py @@ -423,13 +423,13 @@ class System(object): @staticmethod def enumerate_processes(): dbgprint("Enumerating processes with CreateToolhelp32Snapshot", "SLOW") - process_entry = gdef.PROCESSENTRY32() + process_entry = gdef.PROCESSENTRY32W() process_entry.dwSize = ctypes.sizeof(process_entry) snap = winproxy.CreateToolhelp32Snapshot(gdef.TH32CS_SNAPPROCESS, 0) - winproxy.Process32First(snap, process_entry) + winproxy.Process32FirstW(snap, process_entry) res = [] res.append(process.WinProcess._from_PROCESSENTRY32(process_entry)) - while winproxy.Process32Next(snap, process_entry): + while winproxy.Process32NextW(snap, process_entry): res.append(process.WinProcess._from_PROCESSENTRY32(process_entry)) winproxy.CloseHandle(snap) return res @@ -467,12 +467,12 @@ class System(object): # One snap for both enum to be prevent race snap = winproxy.CreateToolhelp32Snapshot(gdef.TH32CS_SNAPTHREAD | gdef.TH32CS_SNAPPROCESS, 0) - process_entry = gdef.PROCESSENTRY32() + process_entry = gdef.PROCESSENTRY32W() process_entry.dwSize = ctypes.sizeof(process_entry) - winproxy.Process32First(snap, process_entry) + winproxy.Process32FirstW(snap, process_entry) processes = [] processes.append(process.WinProcess._from_PROCESSENTRY32(process_entry)) - while winproxy.Process32Next(snap, process_entry): + while winproxy.Process32NextW(snap, process_entry): processes.append(process.WinProcess._from_PROCESSENTRY32(process_entry)) # Forge a dict pid -> process