フォルダーのWindowsエクスプローラーにコンテキストメニュー項目を追加する方法[終了]


100

レジストリにキーを追加して、Windowsエクスプローラーのファイルに右クリックのコンテキストメニュー項目を追加する方法を見つけました。つまり、エクスプローラーでファイルを右クリックして、そのファイルに対してカスタムアプリを実行できます。

フォルダーに対しても同じようにしたいのですが、(まだ)それを行う方法が見つかりません。カスタムコンテキストメニューハンドラーの作成/作成に関する記事を参照していますが、そこには行きません。

私は記事を発見した、ここでデスクトップにし、エクスプローラの「コンピュータ」にカスケードコンテキストメニュー項目を追加する方法を、これは任意のフォルダには使用できません。

カスタムアプリをコンテキストメニューに追加して、ファイルとフォルダーの両方で機能するようにしたいと考えています。コンテキストメニューハンドラを記述せずにこれを行う方法はありますか?


以下の記事で解決策を見つけました。この記事では、ファイルとフォルダのレジストリを使用してこれを行う方法について説明しています。

次の2つの記事には、追加の情報とオプションが記載されています。


1
この質問は6年間開かれていますか?!誰が6日前にそれを閉じましたか?
Andrew

StackOverflowで私が気に入らないのは、ピエロが質問を締めくくったり、質問をオフトピックとしてマークしたりすることだけです。
マイケル

回答:


208

登録エディター(regedit.exe)で次を見つけます:

  • Windowsエクスプローラーの左パネルまたは右パネルのディレクトリの背景にあるフォルダー右クリックするためのコンテキストメニュー:

    1. HKEY_CLASSES_ROOT\Directory\Background\shell あなたが管理者なら
    2. HKEY_CURRENT_USER\Software\Classes\directory\Background\shell あなたが普通のユーザーなら
  • Windowsエクスプローラの右パネルにあるフォルダ右クリックするためのコンテキストメニュー:

    1. HKEY_CLASSES_ROOT\Directory\shell あなたが管理者なら
    2. HKEY_CURRENT_USER\Software\Classes\directory\shell あなたが普通のユーザーなら
  • 任意のファイルのコンテキストメニュー:

    1. HKEY_CLASSES_ROOT\*\shell あなたが管理者なら
    2. HKEY_CURRENT_USER\Software\Classes\*\shell あなたが普通のユーザーなら

すべての場合:

  1. の下shellに新しいキーを追加し、コンテキストメニュー項目に付ける名前を付けます
  2. このキー内にcommand(必須名)という名前の新しいキーを追加します
  3. 編集default中のプロパティcommandには、 myprogrampath\path\path\executable.exe %1カスタムプログラムを選択したファイルのファイルパスと名前を渡すために

より多くのカスタマイズ:

  • アイコンの追加icon手順1で作成したキーに名前が付けられた文字列値を、アイコンのリソースパスと一致する値で追加します。整数の引数を指定して、使用するアイコンを指定することもできます。例:%SystemRoot%\System32\shell32.dll,3
  • シフトクリック時にのみ表示Extendedステップ1で作成されたキーの名前が付いた空の文字列値を追加します
  • メニューエントリラベルのカスタマイズ:手順1で作成したキーのデフォルト値の値を変更します
  • 変更メニュー項目の場所は:という名前の文字列値を追加Positionの1とします。TopBottom

2
HKEY_CLASSES_ROOT\Directory\Background\shellディレクトリの背景の右クリックにのみ影響を与えることができる
Amos

21
"%1"パスにスペースが含まれる場合に備えてください。
Blrp 2016年

3
すぐに。新しいエクスプローラーウィンドウを開く必要さえありません。右クリックするとすぐに新しい設定が読み込まれます。
ジャンプジャック2016年

1
では環境変数が機能しCommandないようですが、そうですか?
Jack Lu

14
私の以前のコメントについて:問題は交換することによって固定することが可能%1%V
Michael Herrmann 2017

10

私は戻って別のトピックでもこれに回答しました。この質問については特に多くはないようです。

最も簡単な方法は、「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();

2
C#を介してこれを行うためのサンプルコードを提供していただきありがとうございます。これは、アプリからこれをすばやく実行したい人にとっては小さな助けです。
Ayo I

2
残念ながら、「AppliesTo」値は「Directory \ Background」エントリに影響を与えていないようです。フォルダの背景を右クリックすることで、同様の制限をどのように達成できるか知っている人はいますか?
cl0rkster 2018

6

よりクリーンで、より簡単で、より高速なソリューションを見つけました:テキストファイルを作成し、これらのコンテンツを入力し、必要に応じて更新し、.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ファイルを安全な場所に保存するだけです。ファイルを起動した後にレジストリを手動で編集する場合は、右クリックして「エクスポート」を選択します。

パスの二重バックスペースに注意してください:\\


1

私が実際に機能していることがわかった唯一の良い解決策は次のとおりです。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\""

1

コマンドプロンプトを開き、[管理者として実行]してこのコマンドを実行します。

reg add "HKEY_CLASSES_ROOT\Directory\shell\Refi2\command" /d "powershell.exe -noexit -command Set-Location -literalPath '%V'"
  • -d:実行する値[アプリ名exe]。
  • -v:コマンドキー内に新しいサブキーを作成します。
  • -f:キーが既に存在する場合、強制的にオーバーライドします。
  • powershell.exe -noexit -command Set-Location -literalPath '%V'これ代わりに、exeのパスを指定できます。

より多くの機能の詳細については、以下を実行してください。

reg add /?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.