アプリケーション設定の概要
更新 : 2007 年 11 月
ここでは、アプリケーションとユーザーのために設定データを作成および格納する方法について説明します。
Windows フォームのアプリケーション設定機能を使用すると、カスタム アプリケーションとユーザー設定をクライアント コンピュータ上で簡単に作成、格納、および保持できます。Windows フォームのアプリケーション設定を使用すると、データベース接続文字列などのアプリケーション データだけでなく、ユーザーのアプリケーション設定など、ユーザー固有のデータを格納できます。また、Visual Studio またはカスタム マネージ コードを使用して新しい設定を作成し、その設定をディスクに対して読み書きできます。フォーム上のプロパティに設定をバインドしたり、読み込みや保存の前に設定を検証することもできます。
アプリケーション設定により、開発者は、わずかなカスタム コードを記述するだけでアプリケーションの状態を保存できます。これは、以前のバージョンの .NET Framework の動的プロパティに置き換わるものです。アプリケーション設定では、動的プロパティがさまざまな点で機能強化されています。動的プロパティは読み取り専用で遅延バインディングなので、大量のカスタム プログラミングが必要でした。また、動的プロパティ クラスは .NET Framework version 2.0 でも維持されていますが、アプリケーション設定クラスを薄くラップするシェル クラスにすぎません。
アプリケーション設定の概要
Windows フォーム アプリケーションでは、アプリケーションを実行する上で重要なデータをアプリケーションのコードに直接含めない場合がよくあります。アプリケーションが Web サービスまたはデータベース サーバーを使用する場合、この情報を別のファイルに格納しておくと、将来、変更があっても再コンパイルする必要がありません。同様に、アプリケーションによって、現在のユーザーに固有のデータの格納が必要な場合があります。たとえば、ほとんどのアプリケーションには、アプリケーションの外観と動作をカスタマイズするユーザー設定があります。
これらの要件に対応するため、アプリケーション設定には、アプリケーション スコープ設定とユーザー スコープ設定をクライアント コンピュータに格納するための簡単な方法が用意されています。Visual Studio またはコード エディタを使用して、名前、データ型、およびスコープ (アプリケーションまたはユーザー) を指定して任意のプロパティの設定を定義します。使いやすさと読みやすさを向上させるために、関連する設定を特定のグループに配置することもできます。これらの設定は、いったん定義すると永続化され、実行時に、メモリに自動的に読み込まれます。プラグ可能なアーキテクチャでは永続化機構を変更できますが、既定ではローカル ファイル システムが使用されます。
アプリケーション設定では、データは、XML として構成 (.config) ファイルに永続化されます。構成ファイルは、設定がアプリケーション スコープであるか、ユーザー スコープであるかによって異なります。ほとんどの場合、アプリケーション スコープの設定は読み取り専用です。それは、この設定がプログラム情報であり、通常、上書きする必要がないためです。これに対して、ユーザー スコープの設定は、実行時に安全に読み書きできます。これは、アプリケーションが部分信頼で実行されている場合でも同じです。部分信頼の詳細については、「Windows フォームのセキュリティの概要」を参照してください。
設定は、XML フラグメントとして構成ファイルに格納されます。アプリケーション スコープ設定は <application.Settings> 要素によって表され、一般に、app.exe.config 内に配置されます。app はメイン実行可能ファイルの名前です。ユーザー スコープ設定は <userSettings> 要素によって表され、user.config に配置されます。user は、現在、アプリケーションを実行しているユーザーのユーザー名です。app.exe.config ファイルは、アプリケーションと一緒に配置する必要があります。アプリケーションがそのユーザーの設定を最初に保存する際に、設定アーキテクチャによって、要求に応じて user.config ファイルが作成されます。app.exe.config 内に <userSettings> ブロックを定義して、ユーザー スコープ設定に既定値を設定することもできます。
カスタム コントロールもまた、SaveSettings メソッドを公開する IPersistComponentSettings インターフェイスを実装することによって自身の設定を保存できます。 Windows フォーム ToolStrip コントロールは、このインターフェイスを実装してツール バーとツール バー項目の位置をアプリケーション セッション間で保存します。カスタム コントロールとアプリケーション設定の詳細については、「カスタム コントロールのアプリケーション設定」を参照してください。
アプリケーション設定の制約
.NET Framework をホストするアンマネージ アプリケーションではアプリケーション設定を使用できません。Visual Studio アドイン、Microsoft Office で使用される C++、Internet Explorer でのコントロール ホスト、Microsoft Outlook のアドインとプロジェクトなどの環境では、設定は機能しません。
現在、Windows フォームの一部のプロパティはバインドできません。わかりやすい例は ClientSize プロパティです。このプロパティにバインディングすると、実行時に予期できない動作が発生します。通常、設定をプログラムで保存して読み込むことでこの問題を解決できます。
アプリケーション設定には、情報を自動的に暗号化する機能は組み込まれていません。データベースのパスワードなど、セキュリティ関連情報はクリア テキストに保存しないでください。このような機密性の高い情報を格納する場合、アプリケーション開発者はセキュリティで保護する責任を負います。接続文字列を格納する場合、Windows 統合セキュリティを使用することをお勧めします。URL にパスワードをハードコーディングしないでください。詳細については、「コード アクセス セキュリティと ADO.NET」を参照してください。
アプリケーション設定を使用した作業の開始
Visual Studio を使用している場合、[プロパティ] ウィンドウの (ApplicationSettings) プロパティを使用して、Windows フォーム デザイナ内で設定を定義できます。この方法で設定を定義すると、各設定をクラスのプロパティに関連付けるカスタム マネージ ラッパー クラスが自動的に作成されます。また、Visual Studio では、フォームを表示したときにコントロールの設定を自動的に復元し、フォームを閉じたときに設定を自動的に保存するように、フォームまたはコントロールのプロパティに設定をバインドできます。詳細については、「方法 : デザイナを使用してアプリケーション設定を作成する」を参照してください。
設定をより細かく制御する必要がある場合は、独自のカスタム アプリケーション設定ラッパー クラスを定義できます。これを行うには、ApplicationSettingsBase からクラスを派生し、各設定に対応するプロパティを追加し、そのプロパティに特別な属性を適用します。ラッパー クラスの作成の詳細については、「アプリケーション設定アーキテクチャ」を参照してください。
また、Binding クラスを使用して、プログラムにより設定をフォームやコントロールのプロパティにバインドすることもできます。ラッパー クラスの作成の詳細については、「方法 : デザイナを使用してアプリケーション設定を作成する」を参照してください。