结束任务时,遇到“拒绝访问”怎么办?教你轻松化解的实用教程!

内容纲要

当页面突然卡死,就像下图所示,这种情形或许并不常见,但一旦遭遇,必定让人印象深刻。

在大多数情况下,我们习惯于通过点击“结束进程”来迅速关闭卡死的页面。然而,凡事都有例外,有时即便点击了“结束进程”,也可能遇到“拒绝访问”的提示。

面对这样的困境,接下来,小编将为大家详细阐述在遭遇“拒绝访问”时,如何巧妙地解决这个问题,确保系统能够恢复正常运行。

01、首次尝试

在任务管理器点击“拒绝访问”但进程仍无法结束时,就来控制台这处理这个进程,因为这里的log会更清楚些。
小编进行尝试后发现tskill 28384这个方法不行。

上图操作并不成功,小编换个方式处理。

02、找到失败原因

还是不行,再换一个命令,找到原因了。是28384的父级任务37932阻止了此次删除,所以删掉父级37932就好。

回到任务管理器,找到37932这个任务,刚好就在28384的附近。

把父级任务删掉,子级任务随之删除。

成功~

为了更加详尽的显示上述解决过程,小编决定重新触发该场景,通过视频的方式再次进行演示。在视频中可以看到父级任务EngHost.exe被删除后,又迅速地被拉起运行,但是第二次删除的时候,就不再拉了。是因为第一次的时候带了个子级任务,第二次的没带,负责拉起的任务依据EngHost.exe这个任务是否带有子任务来决定是否重新将其恢复运行,这是一种常见的守护行为。

3、优化解决方案

经过先前的努力,我们已成功解决了在结束任务时遭遇的“拒绝访问”这一难题,不过这里存在一个问题,上述解决方案是因为通过错误日志才找到的父级进程,且只找到了父级进程,但是下面的方法可以同时找到父级进程和子级进程,这样可以得到更多的信息解决“拒绝访问”这一问题。
下面小编通过“使用命令行工具”的方法,直接根据一个任务的pid查看其上下级任务。具体步骤为,先打开CMD控制台,使用WMIC命令来获取进程及其父进程和子进程信息。
由子进程查看父进程:
wmic process where (ProcessId=40612) get ParentProcessId, Caption, ProcessId

由父进程查看所有子进程:

wmic process where (ParentProcessId=24728) get Caption, ProcessId

运行结果:

04、总结

“拒绝访问”这一问题到这里就彻底解决了,综上来看,由当前进程pid查找其上下级进程pid有时候对于程序员或者运维是很重要的。

给TA打赏
共{{data.count}}人
人已打赏
程序员

新员工为何通常比老员工薪资高 [译]

2024-1-17 21:18:36

.NET MAUI

.NET MAUI 中的性能改进

2022-6-13 18:01:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索