Geçenlerde Sysinternals SDelete kullanarak dosyaları ve dizinleri güvenli bir şekilde silme olanağına sahip olmak için sağ tıklama menüme yeni bir komut menüsü eklemek istedim . MSDN belgelerini ve Regedit'i kullanarak kayıt defterimde SDelete komutumu içeren bir alt menü ile yeni bir menü öğesi oluşturdum. Dosya ve dizinleri silebilmek *
için bunun yanı sıra dosya türü için de yaptım Directory
. Şimdiye kadar her şey iyi çalıştı ve yeni menüm dosya ve klasörler için işe yaradı.
Ancak daha sonra görev çubuğundaki Explorer atlama listesini kullanarak profilimi açmak istediğimde, gezginimi açmak yerine profilimdeki SDelete komutumu çağırdığının farkına vardım (bu noktada, önce 5 saniye gecikme eklememe sevindim. yürütme ;-)). Temel olarak tüm Explorer atlama listesi girişleri bu şekilde davrandı.
Sorunu dizin işleyicime kadar takip ettim ancak sorunu hala çözemiyorum. Aşağıdaki kodu bir .reg dosyasına kaydederek sorunu yeniden oluşturabilir ve çalıştırabilirsiniz. Lütfen bunu yalnızca .reg dosyalarının nasıl çalıştığını biliyorsanız ve değişiklikleri manuel olarak geri alabiliyorsanız yapın!
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\""
Herhangi biri bana neyi yanlış yaptığımı ve bu sıçrama listesi davranışından nasıl kaçınabileceğimi söyleyebilir mi?