Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查应用程序是如何启动的?_Python_Windows_Pyqt - Fatal编程技术网

Python 检查应用程序是如何启动的?

Python 检查应用程序是如何启动的?,python,windows,pyqt,Python,Windows,Pyqt,我的问题很简单——Python是否可以检查应用程序是以哪种方式启动/生成的 更多信息: 我得到了一个应用程序something.exe,现在我需要检查something.exe是否是由用户启动的,或者更确切地说是由某个第三方应用程序作为子进程运行的 是否可以使用标准库进行检查?在windows中是不可能的。在Unix中,所有进程(init除外)都有父进程 import os parent = os.getppid() 您可以尝试检查os.environ。要运行的不同方法可以设置稍微不同的环境,

我的问题很简单——Python是否可以检查应用程序是以哪种方式启动/生成的

更多信息:

我得到了一个应用程序
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版本。