from win32com.client import GetObject
def Process_path(processname):
WMI = GetObject('winmgmts:')
processes = WMI.InstancesOf('Win32_Process') #get list of all process
for p in processes : #for each process :
if p.Properties_("Name").Value == Processname : #if the process name is the one we wanted
return p.Properties_[7].Value #return the path and break the funcion
return "no such process" #no such process (if the funcion didnt break till now return false)
print(Process_path("process.exe"))
如果你想通过pid获取位置,试试这个:
from win32com.client import GetObject
def Process_path(pid):
WMI = GetObject('winmgmts:')
processes = WMI.InstancesOf('Win32_Process')
for p in processes :
if p.Properties_("ProcessID").Value == pid:
return p.Properties_[7].Value
return "no such process"
print(Process_path("1111"))
4条答案
按热度按时间ubof19bj1#
你看过psutil吗?
甚至更好。..
它有一个exe方法,可以做到这一点
exe()[source]作为绝对路径的进程可执行文件。在某些系统上,这也可能是空字符串。返回值在第一次调用后缓存。
kzmpq1sx2#
通过名称或pid获取文件位置
这将完成这项工作(python 3.6):
如果你想通过pid获取位置,试试这个:
jpfvwuh43#
我想要一个解决方案,给我的路径,其中进程正在运行当前不是源路径像'/usr/bin/python',所以你可以尝试:
50few1ms4#
我通过使用子进程模块和WMIC来解决这个问题。对于有兴趣的人,以下是我的最终解决方案: