我的电脑偶尔会变得非常不响应。打开 Process Explorer 后,我发现 explorer.exe 占用了 100% 的 CPU。我四处寻找,直到找到执行此操作的线程 ID,然后使用 Process Monitor 监视该线程。该线程尝试执行许多操作。其中一些操作的结果是“成功”,而另一些操作的结果是“未找到”。我已附上包含日志的 Excel 文件,但我还附上了一个屏幕截图,其中对操作和匹配计数进行了分组/突出显示。
知道这是怎么回事吗?我运行了 AV 扫描 (Microsoft Security Essentials),它说我没有问题。
日志:https://www.dropbox.com/s/qk5y3hor4knsihh/processMonitor_Logfile.xlsx
根据评论中 SLaks 的问题,Process Explorer 将繁忙的线程显示为 SHLWAPI.dll;以下是堆栈:
ntkrnlpa.exe+0x6ea6b
ntkrnlpa.exe!MmIsDriverVerifying+0xbde
hal.dll+0x2ef2
ntdll.dll!RtlConvertSidToUnicodeString+0xa3
ntdll.dll!RtlFormatCurrentUserKeyPath+0xdb
ADVAPI32.dll!ImpersonateLoggedOnUser+0x6e7
ADVAPI32.dll!ImpersonateLoggedOnUser+0x6a7
ADVAPI32.dll!ImpersonateLoggedOnUser+0x4ba
ADVAPI32.dll!ImpersonateLoggedOnUser+0x7e5
ADVAPI32.dll!ImpersonateLoggedOnUser+0x825
ADVAPI32.dll!RegQueryValueExW+0x8c
SHLWAPI.dll!Ordinal128+0x59
SHLWAPI.dll!SHRegGetValueW+0x16a
SHLWAPI.dll!SHRegGetValueW+0x9a
SHLWAPI.dll!SHQueryValueExW+0x20
SHELL32.dll!SHChangeNotifyDeregister+0xb5d
SHELL32.dll!SHChangeNotifyDeregister+0xe8e
SHELL32.dll!SHChangeNotifyDeregister+0xd26
SHELL32.dll!SHGetPathFromIDListW+0x16a
SHELL32.dll!ILRemoveLastID+0x1c3
SHELL32.dll!SHGetPathFromIDListW+0x8e
SHELL32.dll!SHGetPathFromIDListW+0x12
SHELL32.dll!OpenRegStream+0xc5d
SHELL32.dll!OpenRegStream+0xbbb
SHELL32.dll!SHGetRealIDL+0x2470
SHELL32.dll!Ordinal7+0x1a87f
SHELL32.dll!Ordinal7+0x1a8f8
SHELL32.dll!Ordinal7+0x1ba56
SHELL32.dll!ILFindLastID+0xbea
SHELL32.dll!ILSaveToStream+0x69a
SHELL32.dll!ILFindLastID+0xc96
SHELL32.dll!SHGetSpecialFolderLocation+0xddf
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd3d
SHELL32.dll!SHGetSpecialFolderLocation+0xa90
SHELL32.dll!Ordinal7+0x1b6e7
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd3d
SHELL32.dll!SHGetSpecialFolderLocation+0xa90
SHELL32.dll!Ordinal7+0x1b6e7
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd3d
SHELL32.dll!SHGetSpecialFolderLocation+0xa90
SHELL32.dll!Ordinal7+0x1b6e7
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd3d
SHELL32.dll!SHGetSpecialFolderLocation+0xa90
SHELL32.dll!Ordinal7+0x1b6e7
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd3d
SHELL32.dll!SHGetSpecialFolderLocation+0xa90
SHELL32.dll!Ordinal7+0x1b6e7
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd70
SHELL32.dll!SHGetSpecialFolderLocation+0xe1b
SHELL32.dll!SHGetSpecialFolderLocation+0xd3d
SHELL32.dll!SHGetSpecialFolderLocation+0xa90
SHELL32.dll!Ordinal7+0x1b6e7
答案1
我以前在 XP Rig 上遇到过这个问题,而且我似乎无法阻止它发生 - 这个问题似乎是一个异常事件。我能找到的唯一解决方案是通过任务管理器杀死 Explorer.exe,然后重新启动它。
只需打开任务管理器(Ctrl+Alt+Delete),导航到任务管理器中的“进程”选项卡,在“图像名称”列表下找到“Explorer.EXE”,找到后,选择它,然后按窗口右下角的“结束进程”按钮。这将终止 Explorer。
完成此操作后,返回任务管理器中的“应用程序”选项卡,按“新任务”按钮,然后在出现的对话框中输入“Explorer.EXE”。这将重新启动 Explorer 并解决问题。
答案2
explorer.exe 显然不喜欢“我的电脑”下有快捷方式。请尝试删除 target.lnk 项目,看看是否仍会出现此问题。
另一个可能的解决方法是转到控制面板>任务栏和开始菜单>开始菜单选项卡>自定义,然后向下滚动约 3/4 并选择“不搜索公共文件夹”。