我的問題很簡單 - 是否可以用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