我的问题很简单 - Python是否可以检查应用程序的启动/生成方式?
更多信息:
我收到了一个应用程序something.exe
,现在我需要检查something.exe
是否已由用户启动,或者是否将某个第三方应用程序作为子进程运行。
有可能检查吗?
答案 0 :(得分:2)
使用标准库,在Windows中无法实现。在类Unix中,所有进程(除了init)都有一个父进程。
import os
parent = os.getppid()
您可以尝试检查os.environ
。不同的运行方法可以设置稍微不同的环境或不设置任何变量。
另见psutil。它有许多流程管理功能。
答案 1 :(得分:1)
我在Windows上尝试使用psutil这种方法:
import psutil
def get_process_mode(process_name):
process_mode = None
plist = psutil.get_process_list()
for process in plist:
try:
if process.name == process_name:
if process.parent:
process_mode = "third party app"
else:
process_mode = "user launched"
break
except psutil.AccessDenied:
print "'%s' Process is not allowing us to check its parent!" % process
return process_mode
get_process_mode("something.exe")
但在某些情况下它没有起作用......