我已尝试将调试程序附加到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。
答案 0 :(得分:3)
好的,谢谢大家的贡献和评论。经过一些研究:事实证明 - services.exe是Windows 8.1中受保护的进程,因此无法直接使用。调试器也必须转换为受保护的进程。一种方法是首先使用内核调试器:
http://www.overclock.net/t/1300855/going-deep-dumping-the-memory-of-a-protected-process
答案 1 :(得分:0)
鉴于你想要调试svchost.exe
- 我猜你想要调试服务。
一般情况下,svchost.exe
会托管其中的多项服务。首先,您应该在单个服务中运行只是您的过时服务。
我自己多年没有调试服务了。但我记得使用这些链接寻求帮助:
一个。 How to debug Windows services with Windbg (MSDN Blog)
湾Debugging a Service Application (MSDN)
这些可以帮助 - 如果你还没有看过它们。