Explorer 持续占用 CPU

Explorer 持续占用 CPU

我有一台配备 Intel Core 55 处理器的 Windows 64 位 Pro 笔记本电脑。我注意到,每当我启动系统时,explorer.exe 都会出现 CPU 峰值,即使没有资源管理器窗口,也始终消耗 24-30% 的 CPU。我运行了 Process Explorer 并双击查看线程堆栈。SHLWAPI.dll!SHRegGetUSValueW 似乎消耗了所有 CPU。我如何进一步找到原因?

答案1

我做了初步分析,似乎 SearchIndexer.exe 在发号施令。(它似乎在为同时处于活动状态的 SearchIndexer.exe 做着艰苦的劳动)

答案2

您可以使用procmon.exe过滤器来过滤已识别为尖峰的线程 (TID),并更详细地了解该线程正在做什么。

正如@syneticon-dj 在他的评论中提到的,它正在访问一个注册表值。

我有类似的行为(相同的 CPU 峰值,相同的调用堆栈罪魁祸首),并且我已经确定了几个注册表访问似乎与我映射为标记为“登录时重新连接”的驱动器的一些网络共享有关。

例如,我已映射\\machine\c$\为我的X:驱动器,并且我看到这些相应的访问:

RegOpenKey (成功):HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##machine#c$

RegQueryValue(未找到名称):HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##machine#c$\_LabelFromReg

RegCloseKey (成功): HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##machine#c$

我知道我之前曾通过使用 explorer.exe 浏览并使用上下文菜单的“使用 Notepad++ 编辑”命令从该驱动器打开了一些文件(在 Notepad++ 中)。

但奇怪的是,我还映射了其他共享并打开了文件,但没有看到这些共享的相同注册表访问。

尽管关闭了所有文件并且不再打开该驱动器的资源管理器窗口,但我仍然可以看到注册表访问。

当我点击红色 X 关闭 Explorer 窗口后,我再也没有看到该线程进行任何注册表访问。尽管根据 Process Explorer,同一个 explorer.exe 进程仍然处于活动状态,并且同一个 TID(仍显示SHLWAPI.dll!SHRegGetUSValueW+0x1a4为起始地址)仍然存在(处于 Wait:UserRequest 状态)。

如果有人能对我在这里看到的内容提供更多评论,我将非常乐意。我对注册表访问只发生在我映射的共享之一上感到特别困惑。此外,我原本希望在关闭窗口时 Explorer 进程会终止,但事实并非如此(有时会发生)。从任务栏“固定”重新打开 Explorer 会导致从原始 explorer.exe 进程(相同的 PID 和启动时间)中产生一个新的 Explorer 窗口。

相关内容