内気なもんた君

時々日本語化してます

追記2 : コンテキストメニューにサブメニューを追加

コンテキストメニューにサブメニューを追加

追記1 : 
システム権限で実行が動作しないみたい。
AllFilesystemObjectsじゃだめなのかな?
今は忙しいのであとで見直してみます。

追記2 : 

バックスラッシュが多かったのかなぁ?
訂正したものを貼り付けてみました。
こちらの環境では動作しています。

 

前回のコンテキストメニューのカスタマイズにサンプルでもあった方が
分かりやすいかと思ってちょっとサブメニューを作ってみました。

- = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = -

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd]
"MUIVerb"="拡張コマンド"
"ExtendedSubCommandsKey"="AllFilesystemObjects\\shell\\ExCmd"

;----- パスのコピー -----
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\CopyAsPath]
@="パスのコピー"
"Icon"="imageres.dll,-5302"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\CopyAsPath\command]
@="cmd.exe /c echo \"%1\"|clip"

;----- フォルダーリストのコピー -----
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\DirList]
@="フォルダーリストのコピー"
"Icon"="ieframe.dll,-38738"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\DirList\command]
@="cmd /c dir \"%1\" /b /o:gn | clip"

;----- 区切り線 -----
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\O]
"CommandFlags"=dword:00000008

;----- 新しいプロセス -----
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\opennewprocess]
"ExplorerHost"="{ceff45ee-c862-41de-aee2-a022c81eda92}"
"LaunchExplorerFlags"=dword:00000003
"MUIVerb"="@shell32.dll,-8518"
"MultiSelectModel"="Document"
"icon"="C:\\Windows\\System32\\shell32.dll,-185"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\opennewprocess\command]
"DelegateExecute"="{11dbb47c-a525-400b-9e80-a54615a090c0}"

;----- 新しいタブ -----
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\opennewtab]
"CommandStateHandler"="{11dbb47c-a525-400b-9e80-a54615a090c0}"
"CommandStateSync"=""
"LaunchExplorerFlags"=dword:00000020
"MUIVerb"="@windows.storage.dll,-8519"
"MultiSelectModel"="Document"
"OnlyInBrowserWindow"=""
"icon"="C:\\Windows\\System32\\shell32.dll,-16819"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\opennewtab\command]
"DelegateExecute"="{11dbb47c-a525-400b-9e80-a54615a090c0}"

;----- 新しいウィンドウ -----
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\opennewwindow]
"LaunchExplorerFlags"=dword:00000001
"MUIVerb"="@windows.storage.dll,-8517"
"MultiSelectModel"="Document"
"OnlyInBrowserWindow"=""
"icon"="C:\\Windows\\System32\\imageres.dll,-116"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\opennewwindow\command]
"DelegateExecute"="{11dbb47c-a525-400b-9e80-a54615a090c0}"

;----- 区切り線 -----
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\P]
@=""
"CommandFlags"=dword:00000008

;----- 読み取り専用 -----
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\Readonly]
"MUIVerb"="読み取り専用"
"SubCommands"="ROEnable;RODisable"
"Icon"="shell32.dll,-16777"

;----- システム権限で実行 -----
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\RunSys]
"Icon"="%systemroot%\\\\system32\\\\imageres.dll,-1028"
@="システム権限で実行"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd\shell\RunSys\command]
@="AdvancedRun.exe /EXEFilename \"%1\" /RunAs 4 /Run"

;----- 読み取り専用(有効/無効) -----
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RODisable]
@="無効"
"Icon"="imageres.dll,-1402"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RODisable\command]
@="attrib -r \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\ROEnable]
@="有効"
"Icon"="imageres.dll,-1405"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\ROEnable\command]
@="attrib +r \"%1\""

;----- 元のウィンドウメニュー無効 -----
[HKEY_CLASSES_ROOT\Folder\shell\opennewprocess]
"CommandFlags"=dword:00000008
[HKEY_CLASSES_ROOT\Folder\shell\opennewtab]
"CommandFlags"=dword:00000008
[HKEY_CLASSES_ROOT\Folder\shell\opennewwindow]
"CommandFlags"=dword:00000008

;----- 元のパスのコピー削除 -----
[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\CopyAsPathMenu]

 

- = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = -

説明 :

AllFilesystemObjects へ追加してるので、ファイルとフォルダーのコンテキストメニューへ追加されます。

 

"ExtendedSubCommandsKey"拡張コマンドをサブメニューにしてます。

"SubCommands"読み取り専用をサブメニューにしてます。"ROEnable;RODisable"

CommandStore"ROEnable;RODisable" を登録。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

新しいプロセス、新しいタブ、新しいウィンドウは元々あるメニューを
"CommandFlags"=dword:00000008 で隠して、サブメニューに追加。

パスのコピーも同様に元々あるメニューを削除して、サブメニューに追加。

 

こはちょっと詳しく。
新しいプロセス、新しいタブ、新しいウィンドウはレジストリエントリでは削除できないのでCommandFlagsで隠してます。
CommandFlags=dword:00000008 は本来区切りです。
LegacyDisableだとエクスプローラーが起動しなくなるので、苦肉の策です。

私の環境ではきれいに隠れてくれてますが、メニューの内容によっては区切りが現れるかもしれません。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

パスのコピーはダブルクォーテーション(")付きです。

ダブルクォーテーションを付加したくない場合はこちらを参照。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

フォルダーリストのコピーは、サブディレクトリをリストしません。
サブディレクトリ以下をリストするには /s スイッチを追加してください。

詳しくは、こちらを参照してください。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

システム権限で実行は、AdvancedRun.exe が必要です。
System32にコピーしてください。

必要なのはAdvancedRun.exeのみです。他はコピーしなくてよい。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

区切り線のための O と P は、SeparatorBefore や SeparatorAfter が効果がなかったのでしょうがなく追加してます。

 

- = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = -

元に戻すには以下のエントリを登録してください。

 

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ExCmd]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RODisable]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\ROEnable]

[HKEY_CLASSES_ROOT\Folder\shell\opennewprocess]
"CommandFlags"=-
[HKEY_CLASSES_ROOT\Folder\shell\opennewtab]
"CommandFlags"=-
[HKEY_CLASSES_ROOT\Folder\shell\opennewwindow]
"CommandFlags"=-

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\CopyAsPathMenu]
@="{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}"

 

- = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = -

メニューの名前、コマンドを編集すれば自分専用のメニューを作成できます。

自由にカスタマイズしてください。

サブメニューに関してはあまり詳しくないのでもっとスマートな方法があるかもしれません。

改良してより良いものにしてください。

 

ほぼほぼ追加だけなので大丈夫かとは思いますが、

レジストリの編集は自己責任でお願いします。