我最近想在右键菜单中添加一个新的命令菜单,以便能够使用 Sysinternals 安全地删除文件和目录删除。 使用MSDN 文档和注册表编辑器我在注册表中创建了一个新菜单项,其中有一个包含 SDelete 命令的子菜单。我为文件类型*
和文件类型都创建了此菜单Directory
,以便能够删除文件和目录。到目前为止,一切运行良好,我的新菜单适用于文件和文件夹。
然而,当我后来想使用任务栏中的 Explorer 跳转列表打开我的个人资料时,我意识到它不是打开我的 Explorer,而是调用我的个人资料上的 SDelete 命令(当时我很高兴在执行前添加了 5 秒延迟 ;-))。基本上所有 Explorer 跳转列表条目都是这样运行的。
我把问题追溯到我的目录处理程序,但仍然找不到问题所在。您可以通过将以下代码保存到 .reg 文件中并执行它来重现该问题。仅当您知道 .reg 文件的工作原理并且可以手动撤消更改时才这样做!
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\sysinternals]
"MUIVerb"="Testmenu"
"SubCommands"="mySubCommand"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\mySubCommand]
@="A Command that should do sth."
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\mySubCommand\command]
@="cmd /K \"echo mySubCommand has been invoked\""
谁能告诉我我做错了什么以及如何避免这种跳转列表行为?
答案1
这肯定是 Windows 10 的一个错误,我之前也见过几个案例。解决方法是在 Folder 或 AllFilesystemobjects 中实现动词,而不是在“目录”下。请参阅我在 Microsoft 论坛上对同一问题的回复。
文件夹的自定义上下文菜单与 Windows 默认行为冲突 - Microsoft Community
Windows 10 中的级联菜单和文件资源管理器跳转列表问题(有更好的说明)