Недавно я хотел добавить новое меню команд в мое меню, вызываемое правой кнопкой мыши, чтобы иметь возможность безопасно удалять файлы и каталоги с помощью Sysinternals SDelete.
Используя документацию MSDN и Regedit, я создал новый пункт меню в моем реестре с подменю, содержащим мою команду SDelete.
Я сделал это для типа файла *
а также для Directory
, чтобы иметь возможность удалять файлы и каталоги. Пока все работало хорошо, и мое новое меню работало для файлов и папок.
Однако, когда позже мне захотелось открыть свой профиль, используя список переходов Explorer на панели задач, я понял, что вместо открытия моего проводника он вызвал мою команду SDelete в своем профиле (в тот момент я был рад, что добавил 5-секундную задержку до исполнение ;-)). В основном все записи списка переходов проводника вели себя так.
Я отследил проблему до своего обработчика каталога, но все еще не могу понять проблему. Вы можете воспроизвести проблему, сохранив следующий код в файле .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\""
Кто-нибудь может сказать мне, что я делаю неправильно и как я могу избежать такого поведения в списке?