WindowsのIFEO(Image File Execution Options)を活用してGWXを無効化する方法
この記事はやや入り組んだ話の流れになっているので、少しお付き合いください。Microsoft製品に精通した匿名の情報源から、非常に興味深い情報がメールで届きました。それは「Image File Execution Options(IFEO)」とWindowsデバッガーが持つ、いわば特殊な忍者スキルを活用するテクニックです。その目的は何かと言うと、あの「GWX」騒動への対策です。
以前WMICについて書いた記事と同じように、今回は古くからWindowsに存在しながら、ほとんど注目されてこなかった超強力な機能の一つをご紹介します。OSを使っているとき、たとえプログラムが勝手な振る舞いをしようとも、IFEOを使えば思い通りの制御が可能になるのです。
背景:IFEOとは何か
まず前提知識から。Windowsには「Image File Execution Options(IFEO)」という便利な機能が標準で備わっています。目新しいものではなく、2000年代前半、あるいはそれ以前から存在する機能です。レジストリキーとして実装されており、IFEOを使うと、開発・トラブルシューティング・デバッグなどを目的として、いわゆる「デバッグオプション」付きでプログラムを実行できます。
「実行ファイル自体に用意されているフラグやスイッチ、オプションを使えばいいのでは?」と思うかもしれません。しかし、コンパイル済みのバイナリが提供していない動作をさせたい場合はどうでしょうか。少し分かりにくいかもしれないので、具体例を見てみましょう。※作業の前に必ずデータのバックアップを取ってください!
具体例:メモ帳とIrfanView
ここでは、メモ帳(notepad.exe)とIrfanView(i_view32.exe)という2つの無害なプログラムを使います。テキストエディタと画像ビューアですね。まず、レジストリのIFEO配下にnotepad.exe用のエントリを作成し、そこからIrfanViewを呼び出す「Debugger」キーを設定してみます。regeditを起動し、次の場所へ移動してください。
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\
Image File Execution Options
左ペインには大量のプログラム名が並んでおり、見覚えのあるものもあるはずです。ここで新しいキーを作成し、「notepad.exe」という名前を付けます。これはあくまで演習用で、後ほど削除します。notepad.exeキーを選択した状態で、右ペインに新しい値を作成しましょう。名前は「Debugger」、種類は通常の文字列(REG_SZ)です。そして値のデータを編集し、「i_view32.exe」と入力します。完成すると、スクリーンショットのような状態になります。
実際に何が起こるのかというと、メモ帳を起動すると、その実行がIrfanViewへ引き渡されます。論理的には何の意味もありませんが、これによりプログラムの実行を途中で横取りし、別の処理へ振り向けることができるのです。これがIFEOの本質です。
いよいよGWXの出番
あのWindows 10へのアップグレード通知を覚えていますか? これが不要な場合、対処法はいくつかあります。該当のKB(更新プログラム)をアンインストールする方法、以前のガイドで紹介したように実行を無効化する方法、そして今回解説する「Debuggerメソッド」です。具体的には、レジストリへの書き込み権限が必要なため、管理者権限でコマンドプロンプトを開き、次のようなコマンドを実行します。
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\gwx.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe /c exit 0"
これは一体何をしているのでしょうか。順を追って説明します。まず、次の場所に「gwx.exe」という新しいレジストリキーを追加しています。
HKLM\SOFTWARE\Microsoft\<...>\Image File Execution Options\
こうすることで、GWX.EXEという名前の実行ファイルはすべてこの仕組みで捕捉されます。続いて、文字列型(REG_SZ)の「Debugger」という値を作成し、そのデータとしてWindowsのCMD(コマンドシェル)を指定します。CMDは起動直後に終了ステータス0で終了するだけです。プログラミングの世界では、終了ステータス0は「すべて正常」という意味を持ちます。
要するに、gwx.exeという名前の実行ファイルが起動されると、代わりにコマンドシェルが走り、何もせずに即座に終了する、というわけです。まさに純粋なデバッグ操作のようなものであり、IFEOの設定方法、どの実行ファイルを起点にし、どれをターゲットにするかは完全に自由自在です。これでGWXは実質的にダミープログラム化され、シェルを起動してすぐ終了するだけの存在になります。
IFEOを活用すれば、GWX削除ガイドで触れたような、ファイルの所有権やアクセス許可まわりの厄介な問題にも悩まされずに対処できます。最後に強調しておきますが、これは極めて強力な機能であり、誤って使えばWindowsを簡単に起動不能にしかねません。くれぐれもご注意ください!
参考資料
このトピックに関連する有用な記事をいくつか紹介します。
Junfeng Zhang氏による「Image File Execution Options」
Mithun Shanbhag氏による「Image File Execution Options」
「An Introduction to Image File Execution Options」
「Beware the Image File Execution Options key」
まとめ
Microsoftは時に実に美しい設計で物事を実現しており、デバッガー側――いわば人生のダークサイド――に与えられた自由とパワーには感服せずにはいられません。しかし、どんな道具でも使い方次第で大混乱を招くこともあれば、大きな恩恵をもたらすこともあります。今回のケースで私たちが必要としたのは、Windows 10アップグレード通知を排除するためのシンプルでエレガントな手段でした。この方法なら、最小限の手間でそれを達成できます。
ただし、これは根本的な解決策というよりも回避策である点には留意してください。仮に別のGWX的なプロセスが登場しても、この方法では捕捉できません。また、関連ファイルやスケジュールされたタスクはすべて残ったままです。つまり、システムからの完全な除去というよりは、問題を認識した上で無効化するアプローチと言えます。それでも、この手法は自由度と柔軟性という全く新しい世界への扉を開いてくれるはずです。いつものことながら、システムイメージとバックアップの活用を強くお勧めします。レジストリの仕組みと作業の影響を十分に理解できない限り、安易に手を加えてはいけません。今日、皆さんが価値ある学びを得られたなら幸いです。それでは、良いネットライフを。
-
Windowsのディスク容量を解放する方法:標準搭載ツールの実力を徹底検証
Windowsマシンのディスク容量が不足することは、適切な計画を立てていれば本来防げるはずの問題です。例えば、OS(Cドライブ)を専用パーティションに配置し、新しいソフトウェアを頻繁にインストールせず、データやゲームは別のパーティションやドライブに保存しておけば、Windows Updateによる一時的な増加を除けば、Cドライブの使用量はほぼ一定に保たれます。 しかし、こうした対策を何もしていない場合、ディスク容量の制約に悩まされることになるでしょう。その際にはクリーンアップ作業が必要です。Windowsには標準で複数のツールが用意されており、有名なものもあれば、あまり知られていないものもあり
-
Karen's Replicator – Windows 10で復活した軽量バックアップ・レプリケーションツール
Windows環境で私が長年愛用してきたデータバックアップ・複製ツールが、シンプルながら非常に高性能なフリーソフト「Karens Replicator」です。Windows 7のマシンでは快適に使い続けてきました。Windows 8.1のマシンでもしばらく利用していましたが、システムアップデートに伴うファイルシステムの変更後、動作しなくなったため使用を断念せざるを得ませんでした。オリジナルの開発者であるKarenさんは数年前に亡くなられていたため、今後のアップデートは望めず、これで終わりだと思っていました。ところが、開発に関わっていた人物の一人が開発を引き継ぎ、プログラムの改良を続けてくれたの