追跡! Windowsに存在する2つの「メモ帳(notepad.exe)」の謎:その知識、ホントに正しい? Windowsにまつわる都市伝説(114)(2/2 ページ)
Windowsの「メモ帳」は「%Windir%\System32\notepad.exe」と「%Windir%\notepad.exe」の2つの場所に存在します。なぜ、タイムスタンプ、日付、ファイルハッシュまでも同一の2つのコピーが存在するのでしょうか。一部では、古くから熱い議論が繰り広げられてきました。なぜ、同じファイルに対するリンクではなく、別のコピーとして存在するのか……。今回は、その謎に迫ります。
Windows XPまで、別ファイルで持つことは当然のことだった
もう一度、先ほどの話に戻ります。「なぜ、同じファイルを二重で持つという非効率的な方法をとっているのか」ということです。先ほど紹介したブログは、Windows Vista登場以前に書かれたものです。
今でこそWindowsはNTFSボリュームにしかインストールできませんが(Windows Vista以降)、当時のWindowsはFAT16やFAT32にもインストールできました。そして、ハードリンクはWindows 2000から利用できるようになった機能ですが、NTFSボリューム上でのみサポートされる機能でもあります。シンボリックリンクは、Windows Vistaから利用できるようになった機能であり、こちらもNTFSボリューム上でのみ利用できます。
つまり、NTFS以外のボリュームに対応するためには、2つの「notepad.exe」を別ファイルとして持つ必要があったのです。また、Windows XP以前はCBSアーキテクチャではないので、単純に「notepad.exe」のコピーを2つの場所に配置していたということです(画面3)。
画面3 Windows XPはハードリンクではなく、「notepad.exe」のコピーを2つの場所に単純に配置していた(Windows XPの「fsutil hardlink list」コマンドをサポートしていないため、FindLinksツールを使用)
実は、Windows 7〜8.1のときに一本化が図られたことも
CBSアーキテクチャになったWindows Vistaからは、2つの場所に「%Windir%\WinSxS」ディレクトリの1つの「notepad.exe」に対するハードリンクを作成することが、技術的には可能になりました。そうすることで、ディスク使用をさらに効率化できるはずなのですが、実際にはそのような対応はされませんでした。そのまま、現在のWindows 10まで悪しき伝統が引き継がれているように見えます。しかし、それは正確ではありません。
実は、Windows 7からWindows 8.1のときに、一本化が図られた形跡が残っています。しかし、最新状態に更新されたWindows 7やWindows 8.1では、Windows 10の場合と同様に別ファイルにリンクされています。
なぜ、一本化が図られた形跡があるのかといえば、『Windows Sysinternals徹底解説』(2012年4月発行、筆者訳)のFindLinksユーティリティーを説明する部分に、使用例として「notepad.exe」のハードリンクを参照する部分があり、「%Windir%\System32\notepad.exe」と「%Windir%\notepad.exe」が「%Windir%\WinSxS」ディレクトリ下の同じファイルをリンクしていることを説明していたからです。この書籍の制作時に筆者が取得したスクリーンショットが以下の画面4です。
画面4 「%Windir%\System32\notepad.exe」と「%Windir%\notepad.exe」が同じファイルをリンクしていた証拠(出展:『Windows Sysinternals徹底解説 初版/改訂版』)
ファイルの日付を確認したところ、「2011年12月19日」に動作していたWindows 7 Service Pack1(SP1)のものでした。同じスクリーンショットと説明が『Windows Sysinternals徹底解説 改定新版』(2017年6月発行)にも掲載されていますが、現状と異なるのは、原書のその部分が改訂されていなかったからです。
最新状態に更新されている現在のWindows 7で、「%Windir%\WinSxS」ディレクトリにあるメモ帳関連のコンポーネントを調べてみると、タイムスタンプが「2015年8月12日」のバージョンに更新されていることが分かります。
「x86(またはx64)_microsoft-windows-notepad_」で始まるものが「%Windir%\notepad.exe」用、「x86(またはx64)_microsoft-windows-notepadwin_」で始まるものが「%Windir%\System32\notepad.exe」用であることが容易に想像できます。そして、最も古いバージョン(6.1.7600.16385)は別々のファイルではなく、同一ファイルに対するハードリンクであることが分かります(画面5)。
画面5 バージョン6.1.7600.16385の「notepad.exe」は、「%Windir%\notepad.exe」用と「%Windir%\System32\notepad.exe」用で一本化されていた
さらに、更新履歴やバージョン情報(6.1.7601.18917および6.1.7601.23120)などで調べていくと、以下のサポート情報にたどり着きました。
- [MS15-088]Windows、Internet Explorer、Officeセキュリティ更新プログラムについて 2015年8月11日(Microsoft Windowsのサポート)
このサポート情報が対応する問題とは、「安全ではないコマンドラインパラメーターの受け渡しにより、情報漏えいが起こる(3082458)」というCVE-2015-2423の脆弱(ぜいじゃく)性であり、「notepad.exe」が更新対象になっています。Windows 7では、このときに再び2つに分かれてしまったようです。2つに分けられたのが、この脆弱性に対応するために、どうしても必要だったのかどうかまでは分かりません。
Windows 8(2012年リリース)やWindows 8.1(2013年リリース)についても、リリース時のインストールメディアを調べた限りでは、Windows 7と同じように、最初は一本化されていました(ファイルバージョンは6.2.9200.16384、6.3.9200.16384)。Windows 8とWindows 8.1もこのサポート情報の脆弱性の更新対象になっており、このタイミングで2つに分かれたようです(それ以前の更新で分かれた可能性もあります)。
メモ帳の謎、完全解明! とはいきませんでした……
メモ帳が2つの場所に存在する理由について、ハードリンクを使えば1つのファイルにできるのに、別々のファイルになっている理由について、まだすっきりしていないかもしれません。筆者自身、すっきりしていません。ここまでをまとめると、次のことが言えます。
- メモ帳が「%Windir%\notepad.exe」と「%Windir%\System32\notepad.exe」の2つのパスに存在する理由は、Windows 3.0とWindows NTにおけるメモ帳の場所の違いに由来する、古いセットアッププログラムに対する互換性を提供するため
- ハードリンクやショートカットではなく、ファイルのコピーを別の場所に配置したのは、Windowsがインストールされる可能性があった、当時利用可能であったファイルシステムにある
- Windows VistaのCBSとNTFSのハードリンク機能により、一本化が可能になった。Windows 7、Windows 8、Windows 8.1では最初は一本化されていた
- セキュリティ更新プログラムにより、再び2つの場所に分けられた
もう「%Windir%\notepad.exe」は削除してもいいんじゃないかと思うかもしれませんが、ここは歴史的に使われてきた場所であり、攻撃者にとっては格好の隠れ場所候補です。現在は「%Windir%\notepad.exe」が存在し、これを悪意のあるファイルに上書きするのは困難です。なぜなら、システムファイルを更新できるのは「TrustedInstaller」サービスだけであり、管理者権限があっても、システム(SYSTEM)アカウントであっても、変更できないからです(画面6)。
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 今度はWindows 7のWindows Updateでトラブル──でも、解決策はあります!
2017年12月4日ごろから、Windows 7で「Windows Update」を実行できないというトラブルに遭遇しているユーザーが少なからずいるようです。Microsoftによる公式なアナウンスや回避策は今のところないようですが、取り急ぎ、問題を解消できる可能性がある方法を紹介します。 - 年の初めに再確認、2018年にサポートが終了するMicrosoft製品は?
Microsoftは同社の製品およびサービスについて、明確なサポートポリシー(ただし、途中で変更あり)に基づき、更新プログラムを含むサポートを提供しています。2018年は主に10年前にリリースされた製品がサポート終了を迎えます。どのような製品があるのか、年の初めに再確認し、使用していないかどうかを調べておきましょう。 - Windows 10 Fall Creators Updateがやってきた! 急いでアップグレードするその前に……
Windows 10の最新バージョン「Windows 10 Fall Creators Update バージョン1709(ビルド16299)」がリリースされました。「出勤しようとしたら、突然、アップグレードが始まって困った」「早く帰りたいのにPCの電源を落とせない」なんてことにならないよう、まだ準備ができていない、そして、まだWindows Updateで検出されないのであれば、今が備えるチャンスですよ。 - はじめてのWindows 10入門講座――最新OSとうまく付き合っていく方法
本連載では、Windowsユーザーとしての筆者が、日々遭遇する疑問の調査やトラブル解決を取り上げてきましたが、たびたび深入りし過ぎ、一般ユーザーには余計な情報を提供したかもと反省しています。そこで今回は、はじめてWindows 10に触れるという方に向けて、Windows 10とうまく付き合うヒントを紹介します。