Windows错误:[错误5] 拒绝访问
我一直在尝试结束一个进程,但所有的方法都让我遇到了“访问被拒绝”的错误。
我通过 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。如果还是不行,再从第七步开始。
- 安装 vcredist_x86(如果你是64位操作系统,就安装64位版本)。
- 打开“我的电脑”。
- 进入本地磁盘(C:/或者你电脑上显示的其他字母)。
- 右键点击“用户”>“属性”>“安全”>“高级”。
- 在“所有者”那里点击“编辑”,在更改所有者的列表中选择新的所有者,然后勾选“将更改应用到所有子文件夹”。
- 完成后点击“确定”两次。
- 接着去“权限”设置。
- 选择你的用户。
- 点击“完全控制”。
- 应用更改并关闭属性窗口,然后安装Python。
这个方法对我有效。
0
有趣的是,这意味着你没有权限去结束这个进程。简单来说,你没有权限去干这件事。这可能是因为你的账户级别比较低,比如说是一个“访客”账户,或者是因为你的账户受到了一些组策略的限制。也有可能是因为用户账户控制(UAC)的原因,比如你在自己的电脑上是管理员,但没有以管理员身份运行程序。我不太确定Windows 7是否允许没有提升权限的进程被结束,不过我觉得应该是可以的。
3
如果有人感兴趣,这里有个解决办法——即使作为管理员,我在使用 os.kill
时也会遇到某些服务的访问被拒绝。不过,这个方法可以用:
import subprocess
subprocess.check_output("Taskkill /PID %d /F" % pid)
所以,如果你不在乎跨平台的兼容性,想要一个简单粗暴的解决方案,可以试试这个。