レジストリにキーを追加して、Windowsエクスプローラーのファイルに右クリックコンテキストメニュー項目を追加する方法を見つけました。つまりエクスプローラーでファイルを右クリックし、そのファイルに対してカスタムアプリを実行できます。
フォルダに対しても同じことをしたいのですが、それを行う方法はまだ見つかりませんでした。カスタムコンテキストメニューハンドラーの作成/作成に関する記事がありますが、そこには行きたくありません。
カスケードコンテキストメニュー項目をデスクトップとエクスプローラーの「コンピューター」に追加する方法に関する記事 here を見つけましたが、これはどのフォルダーでも機能しません。
カスタムアプリをコンテキストメニューに追加し、ファイルとフォルダーの両方で動作するようにしたいと思います。コンテキストメニューハンドラを作成せずにこれを行う方法はありますか?
すべての場合:
icon
という名前の文字列値を追加します。また、使用するアイコンを指定する整数の引数を指定することもできます。例:%SystemRoot%\System32\Shell32.dll,3
Extended
という名前の空の文字列値を追加しますPosition
という名前の文字列値を、Top
、Bottom
のいずれかで追加します。私は、ファイルとフォルダーのレジストリを介してこれを行う方法を説明する以下の記事で解決策を見つけました:
次の2つの記事には、追加情報とオプションが記載されています。
私は戻って、別の topic でこれに答えました。具体的には、この質問にはそれほど多くはないようです。
最も簡単な方法は、「AppliesTo」というキーに文字列値を追加し、その値を「under:{path}」に設定することでした
私の例では、Tドライブのみを参照するようにしたいので、文字列値は「AppliesTo」:「under:T:」です。
C#では、これは次の方法で簡単に実現できます。
RegistryKey _key = Registry.ClassesRoot.OpenSubKey("Folder\\Shell", true);
RegistryKey newkey = _key.CreateSubKey("My Menu Item");
newkey.SetValue("AppliesTo", "under:T:");
RegistryKey subNewkey = newkey.CreateSubKey("Command");
subNewkey.SetValue("", "C:\\yourApplication.exe");
subNewkey.Close();
newkey.Close();
_key.Close();
よりクリーンで簡単で高速なソリューションを見つけました:テキストファイルを作成し、これらの内容を入力し、必要に応じて更新し、.regサフィックスで保存して起動します(レジストリのユーザー部分にアクセスするため、管理者権限は不要です) ):
Windows Registry Editor Version 5.00
; Setup context menu item for click on right panel:
[HKEY_CURRENT_USER\Software\Classes\directory\Background\Shell\MenuItemNameBackground\command]
@="C:\\yourpath\\executable.exe \"%1\""
; Optional: specify an icon for the item:
; HKEY_CURRENT_USER\Software\Classes\directory\Background\Shell\MenuItemNameBackground]
;"icon"="C:\\yourpath\\appicon.ico"
; Optional: specify a position in the menu
; HKEY_CURRENT_USER\Software\Classes\directory\Background\Shell\MenuItemNameBackground]
;"position"="Bottom"
; -------------------------------------------------------------------------------------
; Setup context menu item for click on folders tree item:
[HKEY_CURRENT_USER\Software\Classes\directory\Shell\MenuItemNamePanel\command]
@="C:\\yourpath\\executable.exe \"%1\""
; Optional: specify an icon for the item:
; [HKEY_CURRENT_USER\Software\Classes\directory\Shell\MenuItemNamePanel]
;"icon"="C:\\yourpath\\appicon.ico"
; Optional: specify a position in the menu
; [HKEY_CURRENT_USER\Software\Classes\directory\Shell\MenuItemNamePanel]
;"position"="Top"
このようにして、構成のバックアップを作成することもできます。安全な場所に.regファイルを保存するだけです。ファイルの起動後にレジストリを手動で編集する場合は、右クリックして「エクスポート」を選択します。
パスの二重バックスペースに注意してください:\\
私が本当に働いているとわかった唯一の良い解決策は次のとおりです: https://superuser.com/questions/1097054/Shell-context-menu-registry-extension-doesnt-work-when-default-program-is-other
HKEY_CLASSES_ROOT\SystemFileAssociations \your.extension\ Shell\commandにキーを追加します最後のキーを変更したいコマンドで変更します。
私の目的のために:
"C:\Program Files (x86)\GPSBabel\gpsbabel.exe" -r -i gpx -f "%1" -x simplify,count=1000 -o gpx -F "%1.gpx"
それをエクスポートすると、.regが得られます:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\.gpx\Shell\Simplify gpx\command]
@="\"C:\\Program Files (x86)\\GPSBabel\\gpsbabel.exe\" -r -i gpx -f \"%1\" -x simplify,count=1000 -o gpx -F \"%1.gpx\""