Python 检查应用程序是如何启动的?
我的问题很简单——Python是否可以检查应用程序是以哪种方式启动/生成的 更多信息: 我得到了一个应用程序Python 检查应用程序是如何启动的?,python,windows,pyqt,Python,Windows,Pyqt,我的问题很简单——Python是否可以检查应用程序是以哪种方式启动/生成的 更多信息: 我得到了一个应用程序something.exe,现在我需要检查something.exe是否是由用户启动的,或者更确切地说是由某个第三方应用程序作为子进程运行的 是否可以使用标准库进行检查?在windows中是不可能的。在Unix中,所有进程(init除外)都有父进程 import os parent = os.getppid() 您可以尝试检查os.environ。要运行的不同方法可以设置稍微不同的环境,
something.exe
,现在我需要检查something.exe
是否是由用户启动的,或者更确切地说是由某个第三方应用程序作为子进程运行的
是否可以使用标准库进行检查?在windows中是不可能的。在Unix中,所有进程(init除外)都有父进程
import os
parent = os.getppid()
您可以尝试检查os.environ
。要运行的不同方法可以设置稍微不同的环境,也可以不设置任何变量
再看看。它有许多用于流程管理的功能。我在Windows上尝试了以下方法:
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\u process\u模式(“something.exe”)
但在某些情况下效果并不好……为什么要知道这一点很重要?当你说由“第三方”启动的代码时,你是指导入python模块还是独立运行应用程序?@Legostrmtroopr我认为他试图检测调试程序。请注意,在上面的代码中,我获取所有进程的列表,并检查是否存在具有给定名称的进程,然后如果该进程具有父进程,这是一个第三方应用程序,在其他情况下,它是一个用户启动的应用程序。必须在Windows上处理AccessDenied异常,因为某些进程是使用NT AUTHORITY\SYSTEM用户启动的,并且这些进程不可读。很遗憾<代码>'psutil.Process(pid=8680)'进程不允许我们检查其父进程用于
get\u process\u模式(\uuu file\uuuu)
。您的意思是os.getppid()
在Windows上不起作用吗?@Lucas我正在使用Python2。在版本3.2中更改:添加了对Windows的支持。不幸的是,我使用的是Python 2.7版本。