
Windows は、マシンの IP アドレスなどの小さな情報を格納するためにレジストリに大きく依存しています。Unix、Linux、OS-X では、すべてを通常のファイルに格納します。
レジストリに関しては、いくつかの問題があることがわかります。
情報にアクセスするのはそれほど簡単ではありません。たとえば、マシンが起動に失敗し、別のマシンにディスクをマウントして別の OS (別の Windows または Linux) からアクセスすることで問題を解決しようとすると、すべてのファイルに簡単にアクセスできます (アクセス許可と暗号化を除く)。ただし、レジストリの場合、理論的には読み取り (およびおそらく変更) が可能ですが、追加のアプリケーションが必要になります。
コマンドライン アクセス (マシンが起動しなくなった場合) は不可能です (そのためのアプリもある場合を除きますが、それらのアプリをインストールして使用するのは、ディスク上のファイルにアクセスするよりもはるかに難しいと思います)。
情報はファイルまたはレジストリのいずれかに保存されるため、2 つの場所を管理する必要があります。
ファイルの操作時によく使用されるツール (
findstr
Windows 版の の弟分である などgrep
) は、レジストリ キーの操作時には存在しません。
マイクロソフトが最初にレジストリを実装したのであれば、それは正当な理由があってのことであり、当時の他のオペレーティング システムに対して Windows に (わずかでも) 競争上の優位性を与えたに違いありません。
私は、Windows が誕生した当時は特に重要だったパフォーマンスとスペースの制約について考えましたが、レジストリに何かを保存することでパフォーマンスが向上したり、使用されるスペースが削減されたりする理由がわかりません (DWORD を実際の DWORD としてレジストリに保存するのと、その文字列表現をファイルに保存するのとではスペースが節約されますが、1985 年でもそれがそれほど重要だったでしょうか?)。
セキュリティ面でも、違いはないようです。1985 年当時もそうだったかどうかはわかりませんが、今日のファイルベースのアクセス許可は、レジストリ キーに実装されているアクセス許可と同等かそれ以上に強力であるように見えます。
構成も同様で、ツリーベースの構造であり、インデックス作成/検索機能はありません (ただし、Windows の新しいバージョンでは、ファイルのインデックス作成が実装されています)。
では、すべてをファイルに保存することと比較して、レジストリの利点は何でしょうか、あるいは元々何だったのでしょうか?
答え1
マイクロソフトがレジストリを使い始める前は、INIファイル(テキスト ファイル) INI ファイルのみを使用して優れたプラットフォームを開発するのは、次の理由から非常に困難であることがわかりました。
- Unicode をサポートするのは簡単ではありません。
これはテキスト ファイルなので、権限はキー レベルではなくファイル レベルで設定されます。ファイルにアクセスできるユーザーは、そのファイル上のすべてのパラメーターにアクセスできます。
2 つのスレッドが同時に INI ファイルを更新しようとすると、他のスレッドによって行われた変更が誤って削除される可能性があります。
- プログラムは INI ファイルを排他モードで開き、他のすべてのユーザーをロックアウトすることができます。
- INI ファイルには文字列のみが含まれます。バイナリ データを保存する場合は、何らかの方法で文字列としてエンコードする必要があります。
- INI ファイルの解析は遅いです。
- INI ファイルの集中管理は困難です。INI ファイルはシステム内のどこにでも存在する可能性があるため、ネットワーク管理者はアプリケーションの状態をチェックしたり、古くなったアプリケーションをアップグレードしたりするスクリプトを記述できません。
- システムがマルチユーザーになり、各ユーザーの設定を管理するのが大変になり始めました。そのため、ユーザーごとに INI ファイルを分ける必要が生じることがありました。
これらは、Microsoft が新しいソリューションを探すきっかけとなった主なポイントであり、レジストリによってもたらされました。レジストリはデータベースであるため、以前の問題は解決されますが、新しい問題も生じます。
- それは単一障害点です。
- バイナリです。破損した場合、素手で修復するのは非常に困難です。
- 設定をレジストリに置くアプリケーションは移植性が低くなります。
- 複雑なナビゲーション。
重要な情報源へのクレジット:http://blogs.msdn.com/b/oldnewthing/archive/2007/11/26/6523907.aspx