我的问题很简单 - 是否可以用Python来检查应用程序启动/产生的方式?检查应用程序如何启动?
的更多信息:
我有一个应用程序something.exe
,现在我需要检查,如果something.exe
已经启动是否由用户或者更确切地说,与运行它作为一个子进程的一些第三方应用程序。
是否可以检查?
我的问题很简单 - 是否可以用Python来检查应用程序启动/产生的方式?检查应用程序如何启动?
的更多信息:
我有一个应用程序something.exe
,现在我需要检查,如果something.exe
已经启动是否由用户或者更确切地说,与运行它作为一个子进程的一些第三方应用程序。
是否可以检查?
使用标准库,它不可能在Windows中。在Unix中,像所有进程(除了init)都有一个父进程。
import os
parent = os.getppid()
您可以尝试检查os.environ
。运行不同的方法可以设置稍微不同的环境或不设置任何变量。请参阅psutil。它具有许多过程管理功能。
我试图在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")
但它并没有在某些情况下,工作好...
为什么这很重要知道吗?当你说代码由“第三方”发起时,你的意思是导入python模块或实际运行应用程序独立? – 2014-01-06 22:52:16
@LegoStormtroopr我认为他试图检测debuger。 – eri