アプリケーション設定の概要Application Settings Overview

この記事では、アプリケーションとユーザーの代わりに設定データを作成して保存する方法について説明します。This article discusses how to create and store settings data on behalf of your application and your users.

Windows フォームのアプリケーション設定の機能により、カスタム アプリケーションと、クライアント コンピューター上のユーザー設定の作成、保存、および保守が簡単になります。The Application Settings feature of Windows Forms makes it easy to create, store, and maintain custom application and user preferences on the client computer. Windows フォーム アプリケーションの設定ではデータベースの接続文字列など、アプリケーションのデータだけでなく、ユーザー アプリケーションの設定などのユーザー固有のデータを格納することができます。With Windows Forms application settings, you can store not only application data such as database connection strings, but also user-specific data, such as user application preferences. Visual Studio またはカスタムのマネージド コードを使用して、新しい設定の作成、ディスクからの読み取りまたは書き込み、フォームのプロパティへのバインド、および読み込みと保存の前の設定データの検証を実行することができます。Using Visual Studio or custom managed code, you can create new settings, read them from and write them to disk, bind them to properties on your forms, and validate settings data prior to loading and saving.

アプリケーション設定を使用すると、開発者はカスタムコードをほとんど使用することなく、アプリケーションの状態を保存できます。また、以前のバージョンの .NET Framework では、動的プロパティに代わるものです。Application settings enables developers to save state in their application using very little custom code, and is a replacement for dynamic properties in previous versions of the .NET Framework. アプリケーション設定には、読み取り専用で、遅延バインディングであり、複数のカスタム プログラミングを必要とする動的プロパティに対する多くの機能強化が含まれます。Application settings contains many improvements over dynamic properties, which are read-only, late-bound, and require more custom programming. 動的プロパティクラスは .NET Framework 2.0 で保持されていますが、アプリケーション設定クラスを薄くラップするシェルクラスにすぎません。The dynamic property classes have been retained in .NET Framework 2.0, but they are just shell classes that thinly wrap the application settings classes.

アプリケーション設定とはWhat Are Application Settings

Windows フォームアプリケーションでは、多くの場合、アプリケーションの実行に不可欠なデータを必要としますが、アプリケーションのコードに直接含める必要はありません。Your Windows Forms applications will often require data that's critical to running the application, but which you don't want to include directly in the application's code. アプリケーションで Web サービスまたはデータベースサーバーを使用する場合は、この情報を別のファイルに格納して、再コンパイルせずに後で変更できるようにすることができます。If your application uses a Web Service or a database server, you may want to store this information in a separate file, so that you can change it in the future without recompiling. 同様に、アプリケーションは、現在のユーザーに固有の格納データを必要とすることがあります。Similarly, your applications may require storing data that is specific to the current user. たとえば、ほとんどのアプリケーションでは、アプリケーションの外観と動作をカスタマイズするユーザー設定があります。Most applications, for example, have user preferences that customize the application's appearance and behavior.

アプリケーション設定は、クライアント コンピューターにアプリケーション スコープとユーザー スコープの両方の設定を保存する簡単な方法を提供することにより、両方のニーズに対応します。Application settings addresses both needs by providing an easy way to store both application-scoped and user-scoped settings on the client computer. Visual Studio またはコード エディターを使用して、名前、データ型、およびスコープ (アプリケーションまたはユーザー) を指定して特定のプロパティの設定を定義します。Using Visual Studio or a code editor, you define a setting for a given property by specifying its name, data type, and scope (application or user). 使いやすさと読みやすさのために、関連する設定を名前付きのグループに配置することもできます。You can even place related settings into named groups for easier use and readability. これらの設定は、定義された後も保持され、実行時に自動的にメモリに読み込まれます。Once defined, these settings are persisted and read back into memory automatically at run time. プラグ可能なアーキテクチャにより永続化メカニズムを変更できますが、既定では、ローカル ファイル システムが使用されます。A pluggable architecture enables the persistence mechanism to be changed, but by default, the local file system is used.

アプリケーションの設定は、設定がアプリケーション スコープかユーザー スコープかに応じて、別の構成 (.config) ファイルに XML としてデータを保持することで機能します。Application settings works by persisting data as XML to different configuration (.config) files, corresponding to whether the setting is application-scoped or user-scoped. ほとんどの場合は、アプリケーション スコープ設定は読み取り専用です。これは、アプリケーション スコープ設定がプログラム情報であり、通常は上書きする必要がないためです。In most cases, the application-scoped settings are read-only; because they are program information, you will typically not need to overwrite them. これに対し、ユーザー スコープ設定は、アプリケーションが部分信頼で実行されている場合でも、実行時に安全に読み書きできます。By contrast, user-scoped settings can be read and written safely at run time, even if your application runs under partial trust. 部分信頼の詳細については、「 Security in Windows Forms Overview」を参照してください。For more information about partial trust, see Security in Windows Forms Overview.

設定は、構成ファイルの XML フラグメントとして格納されます。Settings are stored as XML fragments in configuration files. アプリケーション スコープ設定は <applicationSettings> 要素によって表され、通常は app.exe.config に配置されます。ここで、 app はメインの実行可能ファイルの名前です。Application-scoped settings are represented by the <applicationSettings> element, and generally are placed in app.exe.config, where app is the name of your main executable file. ユーザー スコープ設定は、 <userSettings> 要素によって表され、 user.config に配置されます。ここで、 user は、現在アプリケーションを実行しているユーザーのユーザー名です。User-scoped settings are represented by the <userSettings> element and are placed in user.config, where user is the user name of the person currently running the application. app.exe.config ファイルはアプリケーションと共に展開する必要があります。 user.config ファイルは、アプリケーションがそのユーザーの設定を初めて保存するときに、必要に応じて設定アーキテクチャが作成します。You must deploy the app.exe.config file with your application; the settings architecture will create the user.config files on demand the first time the application saves settings for that user. また、 <userSettings> app .exe.config 内で ブロックを定義して、ユーザー スコープ設定の既定値を指定することもできます。You can also define a <userSettings> block within app.exe.config to provide default values for user-scoped settings.

カスタム コントロールでは、 IPersistComponentSettings メソッドを公開する SaveSettings インターフェイスを実装することで、独自の設定を保存できます。Custom controls can also save their own settings by implementing the IPersistComponentSettings interface, which exposes the SaveSettings method. Windows フォーム ToolStrip コントロールは、このインターフェイスを実装して、アプリケーション セッション間でのツールバーとツールバー項目の位置を保存します。The Windows Forms ToolStrip control implements this interface to save the position of toolbars and toolbar items between application sessions. カスタム コントロールとアプリケーション設定の詳細については、「 Application Settings for Custom Controls」を参照してください。For more information about custom controls and application settings, see Application Settings for Custom Controls.

アプリケーションの設定の制限事項Limitations of Application Settings

.NET Framework をホストするアンマネージアプリケーションでは、アプリケーション設定を使用できません。You cannot use application settings in an unmanaged application that hosts the .NET Framework. Visual Studio アドイン、C++ for Microsoft Office、Internet Explorer のコントロール ホスト、Microsoft Outlook のアドインやプロジェクトなどの環境では、設定は機能しません。Settings will not work in such environments as Visual Studio add-ins, C++ for Microsoft Office, control hosting in Internet Explorer, or Microsoft Outlook add-ins and projects.

現在、Windows フォームの一部のプロパティをバインドできません。You currently cannot bind to some properties in Windows Forms. 最も注目に値する例は、 ClientSize プロパティで、このプロパティへのバインドにより、実行時に予期しない動作が発生します。The most notable example is the ClientSize property, as binding to this property would cause unpredictable behavior at run time. これらの設定をプログラムで保存して読み込むことで、通常はこれらの問題を回避できます。You can usually work around these issues by saving and loading these settings programmatically.

アプリケーション設定には、情報を自動的に暗号化するための組み込みの機能がありません。Application settings has no built-in facility for encrypting information automatically. データベースのパスワードなどのセキュリティ関連の情報は、クリア テキストで保存しないでください。You should never store security-related information, such as database passwords, in clear text. このような機密情報を格納する場合、アプリケーション開発者に、機密情報の安全性を確保する責任があります。If you want to store such sensitive information, you as the application developer are responsible for making sure it is secure. 接続文字列を格納する場合は、URL にパスワードをハード コーディングするのではなく、Windows 統合セキュリティを使用することをお勧めします。If you want to store connection strings, we recommend that you use Windows Integrated Security and not resort to hard-coding passwords into the URL. 詳細については、「 Code Access Security and ADO.NET」を参照してください。For more information, see Code Access Security and ADO.NET.

アプリケーション設定の概要Getting Started with Application Settings

Visual Studio を使用している場合に、Windows フォーム デザイナーの [プロパティ] ウィンドウの (ApplicationSettings) プロパティを使用して設定を定義することができます。If you use Visual Studio, you can define settings within the Windows Forms Designer using the (ApplicationSettings) property in the Properties window. この方法で設定を定義すると、Visual Studio は、各設定をクラスプロパティに関連付けるカスタムマネージラッパークラスを自動的に作成します。When you define settings this way, Visual Studio automatically creates a custom managed wrapper class that associates each setting with a class property. また、Visual Studio は、フォームが表示されるとコントロールの設定が自動的に復元され、フォームが閉じられると自動的に保存されるように、フォームまたはコントロールのプロパティへの設定のバインドも処理します。Visual Studio also takes care of binding the setting to a property on a form or control so that the control's settings are restored automatically when its form is displayed, and saved automatically when the form is closed.

設定のより詳細なコントロールが必要な場合は、独自のカスタムのアプリケーション設定のラッパー クラスを定義することができます。If you want more detailed control over your settings, you can define your own custom applications settings wrapper class. これは、 ApplicationSettingsBaseからクラスを派生させ、各設定に対応するプロパティを追加して、これらのプロパティに特別な属性を適用することで実現します。This is accomplished by deriving a class from ApplicationSettingsBase, adding a property that corresponds to each setting, and applying special attributes to these properties. ラッパー クラスを作成する方法については、「 Application Settings Architecture」を参照してください。For details about creating wrapper classes, see Application Settings Architecture.

また、 Binding クラスを使用して、フォームとコントロールのプロパティに設定をプログラムでバインドすることもできます。You can also use the Binding class to bind settings programmatically to properties on forms and controls.

関連項目See also