【发布时间】:2015-11-18 14:48:04
【问题描述】:
我尝试在 Windows 8.1 中将调试器附加到 Services.exe,但我始终收到“访问被拒绝”。即使在确保 WinDbg 以“管理员身份”运行(以提升方式启动)之后也是如此。
只是为了测试,我尝试从任务管理器创建一个内存转储文件,但我得到了同样的错误。
我还尝试使用来自 Sysinternals (ProcExp) 的 Process Explorer 创建转储,但遇到了同样的错误。
上图为services.exe所在的进程树(使用procexp查看)。有趣的是,我们可以为 wininit.exe 和 svchost.exe 创建转储文件,但不能为 services.exe 创建转储文件。
我让一些同事在 Windows 7 上对此进行了测试,它运行良好。对于那些使用 Windows 8.1 的用户 - 他们的行为与我相同。
我想知道这是否是 Windows 8.1 的变化。我希望有人可以评论是否有办法使我们能够将调试器附加到 services.exe。
【问题讨论】:
-
用户名列是 NT AUTHORITY\SYSTEM 对于我的问题中显示的所有三个进程。即使在非侵入模式下也无法附加 WinDBG。
-
您可以尝试使用
psexec -s作为系统启动 -
好的,我在 Windows8 (6.2) 中测试过,它可以工作。在 8.1 (6.3) 中,它因访问被拒绝而失败。
-
@shiveshsuman - 抱歉,这是我最好的选择,但现在它已被确认且可重现,我会尝试在 defragtools.com 上 ping 用户。 Andrew Richards 或 Chad Beeder 通常反应灵敏,并且了解 WinDbg 的来龙去脉。
-
我已经添加了一个答案。经过更多研究:事实证明,由于 services.exe 是受保护的进程,这是预期的行为 - 调试器也必须变成受保护的进程(这只能通过编辑 EPROCESS 块来使用涉及内核调试器的解决方法调试器进程)。
标签: windows debugging windows-8.1 windbg