记录一处 Windows 11 文件资源管理器经典右键菜单的时序问题
环境
机器 A
- 操作系统:Windows 11 IoT 企业版 LTSC
- 版本号:24H2
- 内部版本号:26100.9711
- 通过新建:
HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32并打开默认值后直接保存,使其变成空字符串。进而禁用 Windows 11 的新右键菜单,改用经典右键菜单。
机器 B
- 操作系统:Windows 11 专业版
- 版本号:25H2
- 内部版本号:26200.9711
问题
在“此电脑”里左键单击空白处后,在 500ms 内右键任一卷,经典菜单会秒关。新菜单不受影响(按住 Shift 右键同样触发)。
分析
最开始的个人猜测:
左键单击空白处必定触发一次“刷新”,发生在单击后的 500ms 以内。
此时快速右键单击卷,新打开的右键菜单会因为”刷新”而被自动关闭。
经过几个小时排查后得到的结论:
Claude:
原因:在“此电脑”里左键点空白处导致选中状态变化后,Win11 命令栏会在后台重新计算按钮状态。「映射网络驱动器」(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Windows.MapNetworkDrive)的 CommandStateHandler 走的是 CCommandStoreShimOverCommandFolder,它计算时会临时创建再销毁一个 CDefView,销毁时调用了 EndMenu。这时如果已经右键弹出了经典菜单,菜单就被关掉。XAML 新菜单不受影响。
后果:系统不再计算这个按钮的显示状态,一律显示。实测”此电脑”命令栏里网络相关的四个按钮(连接到媒体服务器、添加一个网络位置、映射网络驱动器、断开网络驱动器的连接)都正常显示、功能正常。系统更新可能会把这个值恢复,这一点没验证过,恢复了就再改一次。
解决方案
通过 AdvancedRun 以 TrustedInstaller 运行 C:\Windows\regedit.exe 后修改:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Windows.MapNetworkDrive 下的
CommandStateHandler 为 CommandStateHandler_bak
无须重启文件资源管理器即可生效。

