【问题标题】:Python - how to kill a process, that is not started by any user, but by SYSTEM?Python - 如何杀死一个不是由任何用户启动,而是由系统启动的进程?
【发布时间】:2021-10-04 02:21:29
【问题描述】:

我尝试了下面列出的不同方法,但如果进程不是由当前用户启动的,它们都无法杀死进程。 我每次都收到错误:“PermissionError: [WinError 5] Access is denied”

尝试过的方法:

subprocess.call(["taskkill","/F","/IM","*app name*.exe"])
os.system('TASKKILL /T /F /IM "*app name*.exe"')
os.system('wmic process where name="*app name*.exe" delete')
os.kill(2868, 9)

【问题讨论】:

  • 你为什么要杀死一个系统进程?它们至关重要
  • @Sujay 这个进程是一个程序运行的服务器,我可以杀死连接到服务器的程序(控制器),但我也需要杀死服务器本身

标签: python process operating-system


【解决方案1】:

我发现这个样本对我有帮助:

import ctypes, sys
import subprocess

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if is_admin():
    subprocess.call(["taskkill","/F","/IM","program.exe"])
else:
    # Re-run the program with admin rights
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)

但是,它会更改您当前的工作目录,并且此代码之后的所有内容也会以提升的权限执行。作为一种解决方法,我将这段代码塞进了一个小 exe 中,在 subprocess.Popen()

中执行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多