懒人直接看文章最下面。
网上看过很多次这个问题,暂时没搜到有人发有效的解决方法。
刚好昨天一位网友私信我这问题,由于对方拒绝远程,所以只好一步步指导用procmon分析问题,下面就发下解决思路。
HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
C:\Windows\System32\windows.storage.dll.FriendlyAppName的值是Microsoft WinRT Storage API
尝试修改上面注册表里的“Microsoft WinRT Storage API”字符串,可以发现右键菜单也跟着变了。
可以确定跟这个注册表项有关。已知在桌面右击文件弹出菜单这些操作都是explorer.exe桌面进程完成的,那么想解决这个问题,就需要了解桌面进程在读取了什么注册表后,转去读取这个注册表项。
下面用procmon工具,监控进程explorer.exe在右击图片打开方式这些操作时产生的日志。打开procmon软件,过滤器,过滤器,进程名称 是 explorer.exe 然后 包括。
设置好过滤器后点添加,确定。然后编辑,清除显示(Ctrl+X) 。马上右击图片,打开方式,看到字符串“Microsoft WinRT Storage API”后,就点上图第三个图标停止捕获(Ctrl+E),这样就收集好相关日志了。
点文件,保存(Ctrl+S),然后再文件,打开procmon目录里保存的日志Logfile。(这样的做法可以在下面重置过滤器时不显示多余的内容)
上面注册表里我们看到了FriendlyAppName这个字符串,了解注册表的人可能知道这个什么意思,所以再设置下procmon过滤器,路径 包含 FriendlyAppName 然后 包括。
上图日志中最后一个就是“Microsoft WinRT Storage API”,那它上一个很可能就是跟问题有关的注册表项。
HKCU\Software\Classes\AppXcdh38jxzbcberv50vxg2tg4k84kfnewn\Shell\open\
HKCU\Software\Classes\AppXcdh38jxzbcberv50vxg2tg4k84kfnewn\Shell\open\command\DelegateExecute
2.
HKCR\CLSID\{4ED3A719-CEA8-4BD9-910D-E252F997AFC2}\InProcServer32
3.
C:\Windows\System32\windows.storage.dll
最后就是MuiCache里的字符串。流程清楚了,那么删除第1个步骤里的“DelegateExecute”是不是就能解决问题了?
对比了下正常注册表,正常情况下是没有“DelegateExecute”这项的,那么测试下右击导出command后再删除“DelegateExecute”?(注意:不懂注册表的,在删除注册表前都应该导出备份!)
经测试,删除HKCU\Software\Classes\AppXcdh38jxzbcberv50vxg2tg4k84kfnewn\Shell\open\command右侧的“DelegateExecute”,可以解决右击图片打开方式出现的“Microsoft WinRT Storage API”。