Windows用アプリケーションで設定や情報をどこに保存すべきかの指針

Windows用アプリケーションで設定や情報を保存する場所について悩むことがあります。設定や情報というのは、たとえばデータベースの接続文字列や、ユーザーが指定したウィンドウのサイズや、検索履歴などのことです。

このような情報を格納する標準的な場所としては、次の2種類があります。

  1. iniファイル
  2. レジストリ

マイクロソフトは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または他のファイル

これは良さそうです。しばらく、これに従って使い分けてみようと思います。