Windows用アプリケーションで設定や情報をどこに保存すべきかの指針
Windows用アプリケーションで設定や情報を保存する場所について悩むことがあります。設定や情報というのは、たとえばデータベースの接続文字列や、ユーザーが指定したウィンドウのサイズや、検索履歴などのことです。
このような情報を格納する標準的な場所としては、次の2種類があります。
- iniファイル
- レジストリ
マイクロソフトはiniファイルを非推奨とし、レジストリを使うことを推奨してきました。
また、.NETの環境では、iniファイルやレジストリの他に、プロパティの値をXMLファイルに格納、読み出しできる「アプリケーション設定」というものが用意されています。
アプリケーション設定を使用すると、アプリケーションのプロパティ設定とその他の情報を動的に保存、取得でき、また、カスタム アプリケーションとユーザーの基本設定をクライアント コンピュータに保持できます。
アプリケーション設定
アプリケーション設定には次の2種類があります。
- app.config:アプリケーション構成ファイル
- user.config:ユーザー設定
情報の格納にどれを使うべきか悩んでいたところ、2ちゃんねるで次のようなレスを発見しました。
もうずっと人大杉 273 名前: 久しぶりにage 投稿日: 02/01/29 20:20 id:SBBxg6cU 当たり前だけどレジストリは登録するもんであって iniは初期化するもんであって どちらもアプリケーションのデータを置くものじゃないのね。 つーか、Application Dataに置くのが正解。 C#のIDEで有名なSharpDeveropとかIrvineはそうしてる。
これを読み、目からウロコが落ちました。次のように使い分けるということだと思います。
- システムに登録すべき情報:レジストリ
- アプリケーションの初期化時に読み込まれる設定情報:iniファイル
- その他の情報:Application Dataの下のファイル
このように使い分けると、次のような利点があります。
上記のレスは古いため、.NETのアプリケーション設定について言及されていません。.NETのアプリケーション設定を入れるとすると、次のようになると思います。
- システムに登録すべき情報:レジストリ
- アプリケーションの初期化時に読み込まれる設定情報:iniファイルまたはapp.configファイル
- その他の情報:Application Dataの下のuser.configまたは他のファイル
これは良さそうです。しばらく、これに従って使い分けてみようと思います。