Image Execution Options
( HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
) 実行可能ファイルの名前が付いたキーと文字列 ( REG_SZ
) 値を持つ知られている起動するアプリケーションの動作を変更する必要がある場合は、適切なインルートになります。
しかし、実行可能ファイルに などの非常に一般的な名前を付けた場合、launcher.exe
どうすればもう少し具体的に指定できるでしょうか? そもそも可能でしょうか?
私が念頭に置いている特定のバイナリのみが影響を受けるようにしたいのですが、私の特定のユースケースでは、実行可能ファイルを正確に制限できない場合、影響は中程度にしかなりません。
Sysinternals の Process Explorer に似た、シェルlauncher.exe
と同様に環境変数を設定するという点で、特定の標準動作を置き換える小さなラッパー プログラムを自分で作成したいと思います。set __COMPAT_LAYER=RUNASINVOKER
ラッパーの書き方などはわかりましたが、主な疑問は、レジストリ内、下で何らかの魔法を使用してImage Execution Options
、値の「ハック」の範囲を制限するDebugger
か、ラッパーでこれをフィルタリングする必要がありますか?
に関し:
答え1
Windows 7 以降では、イメージ ファイル実行オプションを正確なパスに制限する方法があります。
- ...\Image File Execution Options\filename.exe の下に、名前が "UseFilter" で値が 0 以外の DWORD を作成します。
- 任意の名前のサブキーを作成します (例: ...\Image File Execution Options\filename.exe\MyFilter)。
- そのサブキーの下に、名前が「FilterFullPath」で、値が完全なパスである文字列 (例: 「C:\mypath\filename.exe」) を作成します。また、必要なオプション (この場合は「Debugger」) もそこに作成します。
これで、システムが任意の「filename.exe」を起動すると、フルパスが任意のサブキーの「FilterFullPath」と一致するかどうかがチェックされます。(異なるパスには複数のサブキーがある場合があります。) 一致する場合は、一致したサブキーのオプションが使用されます。それ以外の場合は、通常どおり、ベース キー IFEO\filename.exe のオプションが使用されます。
答え2
こんな感じでできるらしい
スクリーンショットは、下のバイナリのフルパスに対応するサブキーを作成する方法を示していますHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
。例:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe
これにより、Debugger
文字列値を作成して設定できるようになります。