Modified:
/trunk/psutil/_psmswindows.py
/trunk/psutil/_psutil_mswindows.c
=======================================
--- /trunk/psutil/_psmswindows.py Wed Feb 1 11:05:15 2012
+++ /trunk/psutil/_psmswindows.py Wed Feb 1 15:17:50 2012
@@ -311,8 +311,8 @@
key = line[:pos].upper()
if key:
value = line[pos+1:]
- assert value, line
- ret[key] = value
+ if value:
+ ret[key] = value
return ret
@wrap_exceptions
=======================================
--- /trunk/psutil/_psutil_mswindows.c Wed Feb 1 11:05:15 2012
+++ /trunk/psutil/_psutil_mswindows.c Wed Feb 1 15:17:50 2012
@@ -2038,8 +2038,13 @@
pebAddress = GetPebAddress(processHandle);
// get the address of ProcessParameters
+#ifdef _WIN64
+ if (!ReadProcessMemory(processHandle, (PCHAR)pebAddress + 32,
+ &rtlUserProcParamsAddress, sizeof(PVOID), NULL))
+#else
if (!ReadProcessMemory(processHandle, (PCHAR)pebAddress + 0x10,
&rtlUserProcParamsAddress, sizeof(PVOID), NULL))
+#endif
{
CloseHandle(processHandle);
@@ -2055,8 +2060,13 @@
// 0x48 refers to "Environ" of RTL_USER_PROCESS_PARAMETERS
// Different but related:
//
http://wj32.wordpress.com/2009/01/24/howto-get-the-command-line-of-processes/
+#ifdef _WIN64
+ if (!ReadProcessMemory(processHandle, (PCHAR)rtlUserProcParamsAddress
+ 128,
+ ¤tEnv, sizeof(currentEnv), NULL))
+#else
if (!ReadProcessMemory(processHandle, (PCHAR)rtlUserProcParamsAddress
+ 0x48,
¤tEnv, sizeof(currentEnv), NULL))
+#endif
{
CloseHandle(processHandle);
if (GetLastError() == ERROR_PARTIAL_COPY) {