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

时间:2014-01-06 22:44:01

标签: python windows pyqt

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

更多信息:

我收到了一个应用程序something.exe,现在我需要检查something.exe是否已由用户启动,或者是否将某个第三方应用程序作为子进程运行。

有可能检查吗?

2 个答案:

答案 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")

但在某些情况下它没有起作用......