我在创建新文件夹时遇到了 explorer.exe 挂起的一些问题。
如果我在资源监视器中使用分析等待链,它会显示“explorer.exe 的一个或多个线程正在等待完成网络 I/O”。
当我在 Process Explorer 中查看有问题的线程时,它没有发现任何有趣的东西:
ntdll.dll!ZwWaitForMultipleObjects+0xa
KERNELBASE.dll!GetCurrentThread+0x36
kernel32.dll!WaitForMultipleObjectsEx+0xb3
USER32.dll!PeekMessageW+0x1cd
USER32.dll!MsgWaitForMultipleObjectsEx+0x2a
USER32.dll!MsgWaitForMultipleObjects+0x20
SHELL32.dll!SHAppBarMessage+0x41e
SHELL32.dll!DragAcceptFiles+0x2a3c
SHELL32.dll!DragAcceptFiles+0x2a4f
SHELL32.dll!Ordinal211+0x124
SHELL32.dll!SHChangeNotification_Unlock+0x12f4
USER32.dll!GetSystemMetrics+0x2b1
USER32.dll!IsDialogMessageW+0x19b
USER32.dll!IsDialogMessageW+0x1e1
ntdll.dll!KiUserCallbackDispatcher+0x1f
USER32.dll!PeekMessageW+0xba
USER32.dll!PeekMessageW+0x89
SHELL32.dll!SHChangeNotification_Unlock+0xd9f
SHELL32.dll!Ordinal885+0x1407
SHLWAPI.dll!SHRegGetUSValueW+0x306
kernel32.dll!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x21
当我查看 explorer.exe 线程时,我确实注意到有不少人在谈论 ETW(Windows 事件跟踪),所以显然 explorer.exe 使用了跟踪。
因此,我决定尝试使用 TraceView.exe 来尝试监听 explorer.exe 跟踪。
问题是 TraceView 需要一些难以获得的东西……要么是 pdbs,要么是 CTL 文件,还有 .TMF 文件。我尝试使用 Windows SDK 附带的 explorer.pdb,但没有奏效。我没有在“命名提供程序”中看到 explorer.exe。而且我不知道在哪里可以找到 explorer.exe 的 ctl 或 .TMF 文件。
所以问题是:有没有办法从资源管理器中查看 ETW 跟踪消息?
或者我是否应该不打扰并回到古老的技术,即逐个禁用每个探索者扩展,希望它是其中之一。(更喜欢前者,因为我喜欢追根究底!!)
我不知道您是否看过它们,但 Microsoft 的 Mark Russinovich(以前是 SysInternals,最初编写 Process Explorer)在他的博客上定期撰写有关使用 Sysinternals 工具诊断 Windows 问题的文章。
这个展示了他的过程,因为他试图追踪间歇性 Explorer 挂起(这几乎肯定与你的不同,但确实显示了他使用的过程)http://blogs.technet.com/markrussinovich/archive/2005/ 08/28/the-case-of-the-intermittent-and-annoying-explorer-hangs.aspx
他使用其他技术(包括从 MS 服务器抓取符号)在此处诊断缓慢的 Windows 性能:http: //blogs.technet.com/markrussinovich/archive/2008/09/24/3126858.aspx
我要做的第一件事是在有问题的驱动器上运行 checkdisk。首先排除最简单的原因。
从休眠状态唤醒后,这在 Windows 7 中一直发生在我身上。“新建文件夹”和“重命名文件夹”都将 explorer.exe 拖了很久。最终会回来,但会扼杀你拥有的任何动力。在全新的 W7 笔记本电脑上看到这一点有点令人沮丧。
我的解决方法:启动任务管理器杀死 explorer.exe。任务栏将消失。文件 -> 新任务 -> explorer.exe。任务栏应该重新出现。关闭任务管理器
问题立即得到解决。不过今晚就回来了……
Scott 提出的解决方案非常完美。
我在 Dell Inspiron 1564 上使用 Windows 7(64 位)。
似乎是7中的固有错误。