
2026/03/30 2:38
**Windows 95:古いバージョンのファイルで上書きされるインストーラに対する防御策** - **ファイルシステム保護** - FAT ファイルシステムは、書き込まれるファイルのタイムスタンプを確認します。新しいファイルが既存ファイルよりも古い場合、Windows 95 は上書きを拒否します。 - **ユーザー確認プロンプト** - インストーラが既存ファイルを日付的に古いコピーで置き換えようとすると、Windows 95 は「本当に続行しますか?」というダイアログボックスを表示し、ユーザーの確認を求めます。 - **読み取り専用属性の強制** - 読み取り専用に設定されたファイルは、ユーザーが属性を明示的に変更するか、管理者権限でインストーラを実行しない限り、上書きできません。 - **インストーラ整合性チェック** - インストーラにはチェックサム検証機能が組み込まれることがあります。書き込み対象ファイルのチェックサムが期待値と一致しない場合、インストールは停止します。 - **バックアップ・ロールバックメカニズム** - ファイルを置き換える前に、Windows 95 は一時的なバックアップコピーを作成することがあります。新しいファイルが検証に失敗したり、古い場合はシステムが自動的に元のバージョンへ復旧します。
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
Windows 95は、16ビット Windows でインストーラが古いファイルを新しいものに上書きしてしまうという長年の問題を解決しました。意図されたルールは、新しいファイルのバージョン番号が既存コンポーネントより高い場合のみ置き換えることでしたが、ほとんどのインストーラはこの規則を無視し自由に書き込みました。この問題を解決するため、Windows 95 は頻繁に上書きされるファイル用に隠しバックアップディレクトリ(
C:\Windows\SYSBCKUP)を作成しました。各インストール後に OS はバックアップされたファイルが上書きされたかどうかを確認します。置き換えが新しい場合はバックアップを更新し、そうでなければ古いバージョンを復元します。上書きを完全にブロックしたりユーザーにプロンプトを表示する以前の方法はインストール失敗を引き起こし、複雑さを増していました。最も効果的な戦略――インストーラが自由に上書きできるようにし、Windows 95 が後で誤りを整理する――が、その後の Windows リリースで標準アプローチとなりました。一部のコンポーネントは独自のインストーラを提供し、サードパーティ製インストーラにはそのファイルに直接触れないよう指示していました。
このバージョンはリストから主要なポイントすべてを保持し、未検証の推論を避け、明確で簡潔な物語を提示しています。
本文
16‑ビット版Windowsの時代に、多くのシステムコンポーネントは再配布可能であり、プログラム側がそのコピーを含めてインストーラからシステムへインストールできるようになっていました。
システムコンポーネントをインストールする際の指針としては、もしインストーラがすでにシステム上に同じコンポーネントのコピーを見つけた場合、既存ファイルのバージョン番号とインストールしようとしているファイルのバージョン番号を比較し、新しい方が高い番号ならばそのファイルだけを上書きする。そうでなければ既存ファイルは変更せずに残す、というものでした。
このルールはWindows の後方互換性保証に依存しており、古いプログラムから呼び出されても新しいバージョンが動作し続けることを前提としています。実際にはインストーラの多くがこの指針に従っていませんでした。
プログラムインストーラは「既存ファイルのバージョン番号に関係なく、何でも上書きする」ことがよくありました。Windows 95 上で実行されると、これらのインストーラは Windows 95 用に設計されたコンポーネントを Windows 3.1 の古いバージョンに置き換えてしまい、システム全体に大きな問題を引き起こしました。
Windows 95 はこの問題を回避するため、頻繁に上書きされるファイルのバックアップコピーを隠しディレクトリ
C:\Windows\SYSBCKUP に保持していました。インストーラが終了した後、Windows はこれらのファイルが上書きされたかどうかを確認します。
- 上書きされており、新しいファイルのバージョン番号が
内のものより高ければ、その新しいファイルをSYSBCKUP
にコピーします。SYSBCKUP - 逆に、上書きされた方が低いバージョンであれば、
のコピーを元に戻して元の状態へ復旧します。SYSBCKUP
この仕組みにより、Windows 95 は各インストーラが終了するまで待ち、その後に間違った上書きを修正することができました。
以前の設計では、インストーラがファイルを上書きしようとするとブロックしてしまいましたが、これも問題を増大させました。いくつかのインストーラは失敗として終了したり、ユーザーに次の手順を尋ねるエラーメッセージを表示したり(ユーザーが何をすべきか分かっている前提で)しました。あるいはシステム再起動後にバッチファイルから上書きを行うケースもありました。
ダミーファイルへリダイレクトして書き込みを妨害する試みも失敗し、インストーラが検証ステップで失敗を検知すると中断されてしまいました。
最終的に見つかったベストソリューションは「インストーラには好きなファイルを上書きさせ、後からクリーンアップする」ことでした。
一部のコンポーネントは自前で専用インストーラを提供し、他のインストーラに対してそのコンポーネントファイルを直接インストールしないよう指示することで、この問題を回避しました。
著者について
Raymond は30年以上にわたり Windows の進化に関与してきました。2003 年に「The Old New Thing」というウェブサイトを立ち上げ、予想以上に拡大し、今もなお彼はそれを見てドキドキしています。このサイトから同名の書籍(Addison Wesley 2007)が出版されました。彼は時折 Windows Dev Docs の Twitter アカウントで、役立たずな話題を共有するために登場します。