
Windows ファイル エクスプローラーで 7zip のコンテキスト メニュー オプションを編集したいと思います。
Add to archive...
もっと正確に言うと、 を に置き換えて、+&Add to archive
のようなキーボード ショートカットを使用してこれを開くことができるようにしたいと思います。APPS KEY A
どのregedit
キー/値でこれを実行する必要がありますか?
HKEY_CLASSES_ROOT\Folder\ShellEx\ContextMenuHandlers\7-Zip
なるほど:
{23170F69-40C1-278A-1000-000100020000}
するとHKEY_CLASSES_ROOT\CLSID\{23170F69-40C1-278A-1000-000100020000}
、7zip DLL ファイルへのリンクのみが表示されます。
コンテキスト メニュー オプションを設定する通常の方法は、次のとおりです。
HKEY_CLASSES_ROOT\*\shell\Action x\command
ここでコマンドを設定し、メニューのテキストを変更することもできます。しかし、7zip ではこのメニュー項目のテキストをどのように変更するのでしょうか? &
beforeを追加するとAdd to archive...
、文字 A に下線が引かれ、A がキーボード ショートカットとして有効になります。
答え1
コンテキスト メニュー オプションを設定する通常の方法は、次のとおりです。
いいえ、それはの一つ通常の方法。
すると、HKEY_CLASSES_ROOT\CLSID{23170F69-40C1-278A-1000-000100020000} には、7zip DLL ファイルへのリンクのみが表示されます。
7-Zipのコンテキストメニューオプションはすべて定義されていますこのDLLファイルでは– これらは静的ではなく、右クリックしたファイルの種類に依存するため、Windowsがメニューを表示する必要があるたびにDLL関数が呼び出され、決定する利用可能な各オプションを挿入するかどうか。
DLLファイルの機能を変更するには、通常、ソースコードを見つけて編集し、再コンパイルする必要があります。ただし、メニューラベルはDLL内の文字列リソースとして保存されるため(コードに埋め込まれていないため)、リソースハッカーまたは、EXE/DLL 埋め込みリソースを直接編集する同様のツール。
7-ZipのソースコードはSourceForgeで見つかりますが、こちらはより簡単に閲覧できるコピーです。GitHubで– DLLには、次のような機能を実装する関数が含まれています。IContextMenu COM インターフェースエクスプローラーによって期待されます。
答え2
私も同じ問題を抱えていたので、7-zipのApp-UID、{23170F69-40C1-278A-1000-000100020000}を検索しました。
これにより、次の Reg 値が表示され、登録済みの z-zip DLL が無効になり、Windows エクスプローラーにコンテキスト メニュー エントリが表示されなくなるようです。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked]
"{23170F69-40C1-278A-1000-000100020000}"=""
その値を削除し、7-zip をアンインストールし、最新バージョン (現在は 7z2301-x64.msi) をインストールしましたが、再起動は要求されず、z-zip のコンテキスト メニューはまだ表示されませんでした。
再起動後はすべて正常になりました。注: このレジストリ値が削除されるまで、再起動は数回実行されましたが、変化はありませんでした。
このレジストリ値は同時に存在し、「ブロック」されたものが設定されていました。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved]
"{23170F69-40C1-278A-1000-000100020000}"="7-Zip Shell Extension"
つまり、「ブロック」のエントリは「承認」のエントリよりも優先されるようです。