Process listing now use Wide API (process name is still temporary a ascii string with backslashreplace)

This commit is contained in:
clement rouault
2022-02-07 17:10:54 +01:00
parent 77d90bc4fd
commit 447069df32
2 changed files with 8 additions and 8 deletions
+2 -2
View File
@@ -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)
+6 -6
View File
@@ -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