Windows错误:[错误5] 拒绝访问

9 投票
3 回答
13733 浏览
提问于 2025-04-16 21:29

我一直在尝试结束一个进程,但所有的方法都让我遇到了“访问被拒绝”的错误。

我通过 test= subprocess.Popen([sys.executable, "testsc.py"]) 打开了一个进程(这是一个Python脚本),现在我想结束这个进程。

到目前为止,我尝试了 os.kill(pid, signal.SIGILL)os.kill(pid, 9)test.Terminate() 和简单的 test.kill()。但是这些方法都给我带来了错误。

我在一台运行Windows 7 x86的机器上使用Python 2.7.1.4。希望能得到帮助!谢谢!

3 个回答

0

好的,我之前也遇到过和你一样的问题,还碰到了一些烦人的API。我当时想:“没办法,我必须安装更新,没得选。”但其实我做了以下这些步骤。

提醒; 在开始第七步之前,建议你在完成第六步后尝试安装Python。如果还是不行,再从第七步开始。

  1. 安装 vcredist_x86(如果你是64位操作系统,就安装64位版本)。
  2. 打开“我的电脑”。
  3. 进入本地磁盘(C:/或者你电脑上显示的其他字母)。
  4. 右键点击“用户”>“属性”>“安全”>“高级”。
  5. 在“所有者”那里点击“编辑”,在更改所有者的列表中选择新的所有者,然后勾选“将更改应用到所有子文件夹”。
  6. 完成后点击“确定”两次。
  7. 接着去“权限”设置。
  8. 选择你的用户。
  9. 点击“完全控制”。
  10. 应用更改并关闭属性窗口,然后安装Python。

这个方法对我有效。

0

有趣的是,这意味着你没有权限去结束这个进程。简单来说,你没有权限去干这件事。这可能是因为你的账户级别比较低,比如说是一个“访客”账户,或者是因为你的账户受到了一些组策略的限制。也有可能是因为用户账户控制(UAC)的原因,比如你在自己的电脑上是管理员,但没有以管理员身份运行程序。我不太确定Windows 7是否允许没有提升权限的进程被结束,不过我觉得应该是可以的。

3

如果有人感兴趣,这里有个解决办法——即使作为管理员,我在使用 os.kill 时也会遇到某些服务的访问被拒绝。不过,这个方法可以用:

import subprocess
subprocess.check_output("Taskkill /PID %d /F" % pid)

所以,如果你不在乎跨平台的兼容性,想要一个简单粗暴的解决方案,可以试试这个。

撰写回答