2014年8月1日金曜日

DLLファイルを登録するシェルメニューを追加する

.dll , .ocx ,.ax ファイルをWindowsのレジストリに登録する機能を右クリックメニューを追加する方法です。 該当するファイルにしかメニューが出ないので、通常の使用で邪魔になりません。


登録用のメニュー

レジストリ キーを作成します。

HKEY_CURRENT_USER\Software\Classes\dllfile\shell\Register\command

Registerキーを開きます。

(既定)のデータを&Register
icon(文字列値)のデータをimageres.dll,-67
NeverDefault(文字列値)を作成します。

commandキーを開きます。

(既定)のデータをregsvr32 "%1"にします。

登録解除用のメニュー

レジストリ キーを作成します。

HKEY_CURRENT_USER\Software\Classes\dllfile\shell\UnReg\command

UnRegキーを開きます。
(既定)のデータを&Unregister
icon(文字列値)のデータをimageres.dll,-89

commandキーを開きます。

(既定)のデータをregsvr32 /u "%1"にします。

ocxfileについても同様に設定します。

HKEY_CURRENT_USER\Software\Classes\ocxfile\shell

.axファイル用の設定

.axファイルもActiveX controlの一種ですので同様に設定できますが、デフォルトでは拡張子すら登録されていませんので、拡張子をocxfileへ振り分けています。
なにか他のアプリで登録されている可能性もあるので、空であるのを確認してから登録します。

レジストリ キーを作成します。

HKEY_CURRENT_USER\Software\Classes\.ax

(既定)のデータをocxfileにします。

RegisterとUnRegキーの(既定)やiconは、任意で好きなものへ変更できます。
NeverDefaultは、ダブルクリックしたときに動作する既定の動作へならないように念のため付けてあります。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\.ax]
@="ocxfile"

[HKEY_CURRENT_USER\Software\Classes\dllfile\shell\regsvr]
"MUIVerb"="DLLの登録"
"subcommands"=""
"icon"="imageres.dll,-114"
"NeverDefault"=""

[HKEY_CURRENT_USER\Software\Classes\dllfile\shell\regsvr\shell\Register]
@="&Register"
"icon"="imageres.dll,-67"

[HKEY_CURRENT_USER\Software\Classes\dllfile\shell\regsvr\shell\Register\command]
@="regsvr32 \"%1\""

[HKEY_CURRENT_USER\Software\Classes\dllfile\shell\regsvr\shell\UnReg]
@="&Unregister"
"icon"="imageres.dll,-89"

[HKEY_CURRENT_USER\Software\Classes\dllfile\shell\regsvr\shell\UnReg\command]
@="regsvr32 /u \"%1\""

[HKEY_CURRENT_USER\Software\Classes\ocxfile\shell\regsvr]
"MUIVerb"="ActiveXの登録"
"subcommands"=""
"icon"="imageres.dll,-114"
"NeverDefault"=""

[HKEY_CURRENT_USER\Software\Classes\ocxfile\shell\regsvr\shell\Register]
@="&Register"
"icon"="imageres.dll,-67"

[HKEY_CURRENT_USER\Software\Classes\ocxfile\shell\regsvr\shell\Register\command]
@="regsvr32 \"%1\""

[HKEY_CURRENT_USER\Software\Classes\ocxfile\shell\regsvr\shell\UnReg]
@="&Unregister"
"icon"="imageres.dll,-89"

[HKEY_CURRENT_USER\Software\Classes\ocxfile\shell\regsvr\shell\UnReg\command]
@="regsvr32 /u \"%1\""

元に戻すには、追加したキーや値を削除します。
カスタマイズ以前に何も設定していなければ以下の要領で簡単に戻せます。

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\Classes\.ax]

[-HKEY_CURRENT_USER\Software\Classes\dllfile]

[-HKEY_CURRENT_USER\Software\Classes\ocxfile]

一工夫するとsubcommandを使って、カスケード メニューにもできます。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\.ax]
@="ocxfile"

[HKEY_CURRENT_USER\Software\Classes\dllfile\shell\regsvr]
"MUIVerb"="DLLの登録"
"subcommands"=""
"icon"="imageres.dll,-114"
"NeverDefault"=""

[HKEY_CURRENT_USER\Software\Classes\dllfile\shell\regsvr\shell\Register]
@="&Register"
"icon"="imageres.dll,-67"

[HKEY_CURRENT_USER\Software\Classes\dllfile\shell\regsvr\shell\Register\command]
@="regsvr32 \"%1\""

[HKEY_CURRENT_USER\Software\Classes\dllfile\shell\regsvr\shell\UnReg]
@="&Unregister"
"icon"="imageres.dll,-89"

[HKEY_CURRENT_USER\Software\Classes\dllfile\shell\regsvr\shell\UnReg\command]
@="regsvr32 /u \"%1\""

[HKEY_CURRENT_USER\Software\Classes\ocxfile\shell\regsvr]
"MUIVerb"="ActiveXの登録"
"subcommands"=""
"icon"="imageres.dll,-114"
"NeverDefault"=""

[HKEY_CURRENT_USER\Software\Classes\ocxfile\shell\regsvr\shell\Register]
@="&Register"
"icon"="imageres.dll,-67"

[HKEY_CURRENT_USER\Software\Classes\ocxfile\shell\regsvr\shell\Register\command]
@="regsvr32 \"%1\""

[HKEY_CURRENT_USER\Software\Classes\ocxfile\shell\regsvr\shell\UnReg]
@="&Unregister"
"icon"="imageres.dll,-89"

[HKEY_CURRENT_USER\Software\Classes\ocxfile\shell\regsvr\shell\UnReg\command]
@="regsvr32 /u \"%1\""

元に戻すファイルは同じです。