A
Andrei
Hi,
I'm using:
import win32pdh
junk, instances = win32pdh.EnumObjectItem(None,None,"Process",win32pdh.PERF_DETAIL_WIZARD)
print instances
to get a list of the running process on my PC. Then I try to kill a process using the function I found python\lib\site-packages\win32\scripts\killprocName:
import win32api, win32pdhutil, win32con, sys
def killProcName(procname):
# Change suggested by Dan Knierim, who found that this performed a
# "refresh", allowing us to kill processes created since this was run
# for the first time.
try:
win32pdhutil.GetPerformanceAttributes('Process','ID Process',procname)
except:
pass
pids = win32pdhutil.FindPerformanceAttributesByName(procname)
# If _my_ pid in there, remove it!
try:
pids.remove(win32api.GetCurrentProcessId())
except ValueError:
pass
if len(pids)==0:
result = "Can't find %s" % procname
elif len(pids)>1:
result = "Found too many %s's - pids=`%s`" % (procname,pids)
else:
handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, 0,pids[0])
win32api.TerminateProcess(handle,0)
win32api.CloseHandle(handle)
result = ""
return result
The problem is that if there are many users logged on and I try to kill a process launched by other user, inactive in that moment I get this error:
Traceback (most recent call last):
File "<pyshell#1>", line 1, in ?
killProcName('notepad')
File "C:\Python23\Lib\site-packages\win32\scripts\killProcName.py", line 38, in killProcName
handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, 0,pids[0])
error: (5, 'OpenProcess', 'Access is denied.')
Is there a way to kill a process on win xp indifferently which user started that process and without being active as that user?
Thank you and sorry for the poor English
I'm using:
import win32pdh
junk, instances = win32pdh.EnumObjectItem(None,None,"Process",win32pdh.PERF_DETAIL_WIZARD)
print instances
to get a list of the running process on my PC. Then I try to kill a process using the function I found python\lib\site-packages\win32\scripts\killprocName:
import win32api, win32pdhutil, win32con, sys
def killProcName(procname):
# Change suggested by Dan Knierim, who found that this performed a
# "refresh", allowing us to kill processes created since this was run
# for the first time.
try:
win32pdhutil.GetPerformanceAttributes('Process','ID Process',procname)
except:
pass
pids = win32pdhutil.FindPerformanceAttributesByName(procname)
# If _my_ pid in there, remove it!
try:
pids.remove(win32api.GetCurrentProcessId())
except ValueError:
pass
if len(pids)==0:
result = "Can't find %s" % procname
elif len(pids)>1:
result = "Found too many %s's - pids=`%s`" % (procname,pids)
else:
handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, 0,pids[0])
win32api.TerminateProcess(handle,0)
win32api.CloseHandle(handle)
result = ""
return result
The problem is that if there are many users logged on and I try to kill a process launched by other user, inactive in that moment I get this error:
Traceback (most recent call last):
File "<pyshell#1>", line 1, in ?
killProcName('notepad')
File "C:\Python23\Lib\site-packages\win32\scripts\killProcName.py", line 38, in killProcName
handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, 0,pids[0])
error: (5, 'OpenProcess', 'Access is denied.')
Is there a way to kill a process on win xp indifferently which user started that process and without being active as that user?
Thank you and sorry for the poor English