ConfigurationManager ConfigurationManager ConfigurationManager ConfigurationManager Class

定義

クライアント アプリケーションの構成ファイルにアクセスできるようにします。Provides access to configuration files for client applications. このクラスは継承できません。This class cannot be inherited.

public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
継承
ConfigurationManagerConfigurationManagerConfigurationManagerConfigurationManager

最初の例は、アプリケーション設定を読み取り、新しい設定を追加し、既存の設定を更新する単純なコンソールアプリケーションを示しています。The first example shows a simple console application that reads application settings, adds a new setting, and updates an existing setting.

using System;  
using System.Configuration;  
  
namespace ConsoleApplication1  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            ReadAllSettings();  
            ReadSetting("Setting1");  
            ReadSetting("NotValid");  
            AddUpdateAppSettings("NewSetting", "May 7, 2014");  
            AddUpdateAppSettings("Setting1", "May 8, 2014");  
            ReadAllSettings();  
        }  
  
        static void ReadAllSettings()  
        {  
            try  
            {  
                var appSettings = ConfigurationManager.AppSettings;  
  
                if (appSettings.Count == 0)  
                {  
                    Console.WriteLine("AppSettings is empty.");  
                }  
                else  
                {  
                    foreach (var key in appSettings.AllKeys)  
                    {  
                        Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]);  
                    }  
                }  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error reading app settings");  
            }  
        }  
  
        static void ReadSetting(string key)  
        {  
            try  
            {  
                var appSettings = ConfigurationManager.AppSettings;  
                string result = appSettings[key] ?? "Not Found";  
                Console.WriteLine(result);  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error reading app settings");  
            }  
        }  
  
        static void AddUpdateAppSettings(string key, string value)  
        {  
            try  
            {  
                var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  
                var settings = configFile.AppSettings.Settings;  
                if (settings[key] == null)  
                {  
                    settings.Add(key, value);  
                }  
                else  
                {  
                    settings[key].Value = value;  
                }  
                configFile.Save(ConfigurationSaveMode.Modified);  
                ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error writing app settings");  
            }  
        }  
    }  
}  
Imports System.Configuration  
Module Module1  
  
    Sub Main()  
        ReadAllSettings()  
        ReadSetting("Setting1")  
        ReadSetting("NotValid")  
        AddUpdateAppSettings("NewSetting", "May 7, 2014")  
        AddUpdateAppSettings("Setting1", "May 8, 2014")  
        ReadAllSettings()  
    End Sub  
  
    Sub ReadAllSettings()  
        Try  
            Dim appSettings = ConfigurationManager.AppSettings  
  
            If appSettings.Count = 0 Then  
                Console.WriteLine("AppSettings is empty.")  
            Else  
                For Each key As String In appSettings.AllKeys  
                    Console.WriteLine("Key: {0} Value: {1}", key, appSettings(key))  
                Next  
            End If  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error reading app settings")  
        End Try  
    End Sub  
  
    Sub ReadSetting(key As String)  
        Try  
            Dim appSettings = ConfigurationManager.AppSettings  
            Dim result As String = appSettings(key)  
            If IsNothing(result) Then  
                result = "Not found"  
            End If  
            Console.WriteLine(result)  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error reading app settings")  
        End Try  
    End Sub  
  
    Sub AddUpdateAppSettings(key As String, value As String)  
        Try  
            Dim configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)  
            Dim settings = configFile.AppSettings.Settings  
            If IsNothing(settings(key)) Then  
                settings.Add(key, value)  
            Else  
                settings(key).Value = value  
            End If  
            configFile.Save(ConfigurationSaveMode.Modified)  
            ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name)  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error writing app settings")  
        End Try  
    End Sub  
  
End Module  

前の例では、次に示すように、プロジェクトに App.config ファイルが含まれていることを前提としています。The previous example assumes your project has an App.config file as shown below.

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
    <startup>   
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />  
    </startup>  
  <appSettings>  
    <add key="Setting1" value="May 5, 2014"/>  
    <add key="Setting2" value="May 6, 2014"/>  
  </appSettings>  
</configuration>  

次の例は、接続文字列を使用してデータベースからデータを読み取る方法を示しています。The following example shows how to use a connection string to read data from a database.

using System;  
using System.Configuration;  
using System.Data.SqlClient;  
  
namespace ConsoleApplication1  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            ReadProducts();  
        }  
  
        static void ReadProducts()  
        {  
            var connectionString = ConfigurationManager.ConnectionStrings["WingtipToys"].ConnectionString;  
            string queryString = "SELECT Id, ProductName FROM dbo.Products;";  
            using (var connection = new SqlConnection(connectionString))  
            {  
                var command = new SqlCommand(queryString, connection);  
                connection.Open();  
                using (var reader = command.ExecuteReader())  
                {  
                    while (reader.Read())  
                    {  
                        Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));  
                    }  
                }  
            }  
        }  
    }  
}  
Imports System.Configuration  
Imports System.Data.SqlClient  
Module Module1  
  
    Sub Main()  
        ReadProducts()  
    End Sub  
  
    Sub ReadProducts()  
        Dim connectionString = ConfigurationManager.ConnectionStrings("WingtipToys").ConnectionString  
        Dim queryString = "SELECT Id, ProductName FROM dbo.Products;"  
        Using connection As New SqlConnection(connectionString)  
            Dim command = New SqlCommand(queryString, connection)  
            connection.Open()  
  
            Using reader As SqlDataReader = command.ExecuteReader()  
                While reader.Read()  
                    Console.WriteLine(String.Format("{0}, {1}", reader(0), reader(1)))  
                End While  
            End Using  
        End Using  
    End Sub  
  
End Module  

前の例では、次に示すように、プロジェクトに app.config があることを前提としています。The previous example assumes your project has an App.config as shown below.

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
    <startup>   
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />  
    </startup>  
    <connectionStrings>  
      <add name="WingtipToys" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=WingtipToys;Integrated Security=True;Pooling=False" />  
    </connectionStrings>  
</configuration>  

注釈

ConfigurationManagerクラスを使用すると、コンピューター、アプリケーション、およびユーザーの構成情報にアクセスできます。The ConfigurationManager class enables you to access machine, application, and user configuration information. このクラスは、 ConfigurationSettings非推奨とされたクラスを置き換えます。This class replaces the ConfigurationSettings class, which is deprecated. Web アプリケーションの場合は、 WebConfigurationManagerクラスを使用します。For web applications, use the WebConfigurationManager class.

ConfigurationManagerクラスを使用するには、プロジェクトでSystem.Configurationアセンブリを参照する必要があります。To use the ConfigurationManager class, your project must reference the System.Configuration assembly. 既定では、コンソールアプリケーションなどの一部のプロジェクトテンプレートは、このアセンブリを参照しないため、手動で参照する必要があります。By default, some project templates, like Console Application, do not reference this assembly so you must manually reference it.

注意

アプリケーション構成ファイルの名前と場所は、アプリケーションのホストによって異なります。The name and location of the application configuration file depend on the application's host. 詳細については、「構成ファイルを使用したアプリの構成」を参照してください。For more information, see Configuring Apps by using Configuration Files.

組み込みSystem.Configuration型を使用するか、これらの型から派生させて、構成情報を処理することができます。You can use the built-in System.Configuration types or derive from them to handle configuration information. これらの型を使用して、構成情報を直接操作したり、構成ファイルを拡張してカスタム情報を含めたりすることができます。By using these types, you can work directly with configuration information and you can extend configuration files to include custom information.

クラスConfigurationManagerには、次のタスクを実行できるメンバーが含まれています。The ConfigurationManager class includes members that enable you to perform the following tasks:

  • 構成ファイルからセクションを読み取ります。Read a section from a configuration file. 構成情報にアクセスするにはGetSection 、メソッドを呼び出します。To access configuration information, call the GetSection method. appSettingsAppSettings ConnectionStringsなどの一部のセクションでは、クラスとクラスを使用します。 connectionStringsFor some sections such as appSettings and connectionStrings, use the AppSettings and ConnectionStrings classes. これらのメンバーは、読み取り専用の操作を実行し、構成の1つのキャッシュされたインスタンスを使用し、マルチスレッド対応です。These members perform read-only operations, use a single cached instance of the configuration, and are multithread aware.

  • 構成ファイル全体の読み取りと書き込みを行います。Read and write configuration files as a whole. アプリケーションでは、ローカルまたはリモートで、任意のレベルで、またはその他のアプリケーションやコンピューターに対して、構成設定の読み取りと書き込みを行うことができます。Your application can read and write configuration settings at any level, for itself or for other applications or computers, locally or remotely. ConfigurationManagerクラスによって提供されるメソッドのいずれかを使用して、sampleapp などの構成ファイルを開きます。これらのメソッドはConfiguration 、関連付けられた構成ファイルを操作するために使用できるメソッドとプロパティを公開するオブジェクトを返します。Use one of the methods provided by the ConfigurationManager class to open a configuration file such as SampleApp.exe.config. These methods return a Configuration object that in turn exposes methods and properties you can use to work with the associated configuration files. メソッドは、ファイルが書き込まれるたびに読み取りまたは書き込み操作を実行し、構成データを作成します。The methods perform read or write operations and create the configuration data every time that a file is written.

  • 構成タスクをサポートします。Support configuration tasks. 次の型は、さまざまな構成タスクをサポートするために使用されます。The following types are used to support various configuration tasks:

    既存の構成情報を使用するだけでConfigurationElementなく、 ConfigurationPropertyConfigurationElementCollection、、およびConfigurationSectionクラスなどの組み込みの構成の種類を拡張することで、カスタム構成要素を作成および操作できます。In addition to working with existing configuration information, you can create and work with custom configuration elements by extending the built-in configuration types such as the ConfigurationElement, ConfigurationElementCollection, ConfigurationProperty, and ConfigurationSection classes. 組み込みの構成の種類をプログラムによって拡張する方法の例にConfigurationSectionついては、「」を参照してください。For an example of how to extend a built-in configuration type programmatically, see ConfigurationSection. 属性ベースのモデルを使用する組み込みの構成の種類を拡張する方法の例についてはConfigurationElement、「」を参照してください。For an example of how to extend a built-in configuration type that uses the attribute-based model, see ConfigurationElement.

注意 (継承者)

クラスConfigurationは、構成ファイルを編集するためのプログラムによるアクセスを可能にします。The Configuration class enables programmatic access for editing configuration files. によっConfigurationManagerて提供される Open メソッドのいずれかを使用します。You use one of the Open methods provided by ConfigurationManager. これらのメソッドはConfigurationオブジェクトを返し、さらに、基になる構成ファイルを処理するために必要なメソッドとプロパティを提供します。These methods return a Configuration object, which in turn provides the required methods and properties to handle the underlying configuration files. これらのファイルには、読み取りまたは書き込みのためにアクセスできます。You can access these files for reading or writing.

構成ファイルを読み取るには、 GetSection(String)またGetSectionGroup(String)はを使用して構成情報を読み取ります。To read the configuration files, use GetSection(String) or GetSectionGroup(String) to read configuration information. 読み取りを行うユーザーまたはプロセスには、次のアクセス許可が必要です。The user or process that reads must have the following permissions: -現在の構成階層レベルの構成ファイルに対する読み取り権限。- Read permission on the configuration file at the current configuration hierarchy level.

-すべての親構成ファイルに対する読み取りアクセス許可。- Read permissions on all the parent configuration files.

アプリケーションが独自の構成への読み取り専用アクセスを必要とする場合は、 GetSection(String)メソッドを使用することをお勧めします。If your application needs read-only access to its own configuration, we recommend that you use the GetSection(String) method. このメソッドは、現在のアプリケーションのキャッシュされた構成値へのアクセスを提供しConfigurationます。これは、クラスよりもパフォーマンスが優れています。This method provides access to the cached configuration values for the current application, which has better performance than the Configuration class.

構成ファイルに書き込むには、 Saveメソッドのいずれかを使用します。To write to the configuration files, use one of the Save methods. 書き込みを行うユーザーまたはプロセスには、次のアクセス許可が必要です。The user or process that writes must have the following permissions: -構成ファイルとディレクトリに対する書き込みアクセス許可が現在の構成階層レベルにある。- Write permission on the configuration file and directory at the current configuration hierarchy level.

-すべての構成ファイルに対する読み取りアクセス許可。- Read permissions on all the configuration files.

プロパティ

AppSettings AppSettings AppSettings AppSettings

現在のアプリケーションの既定構成の AppSettingsSection データを取得します。Gets the AppSettingsSection data for the current application's default configuration.

ConnectionStrings ConnectionStrings ConnectionStrings ConnectionStrings

現在のアプリケーションの既定構成の ConnectionStringsSection データを取得します。Gets the ConnectionStringsSection data for the current application's default configuration.

メソッド

GetSection(String) GetSection(String) GetSection(String) GetSection(String)

現在のアプリケーションの既定構成の、指定した構成セクションを取得します。Retrieves a specified configuration section for the current application's default configuration.

OpenExeConfiguration(ConfigurationUserLevel) OpenExeConfiguration(ConfigurationUserLevel) OpenExeConfiguration(ConfigurationUserLevel) OpenExeConfiguration(ConfigurationUserLevel)

現在のアプリケーションの構成ファイルを Configuration オブジェクトとして開きます。Opens the configuration file for the current application as a Configuration object.

OpenExeConfiguration(String) OpenExeConfiguration(String) OpenExeConfiguration(String) OpenExeConfiguration(String)

指定したクライアント構成ファイルを Configuration オブジェクトとして開きます。Opens the specified client configuration file as a Configuration object.

OpenMachineConfiguration() OpenMachineConfiguration() OpenMachineConfiguration() OpenMachineConfiguration()

現在のコンピューターのマシン構成ファイルを Configuration オブジェクトとして開きます。Opens the machine configuration file on the current computer as a Configuration object.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel) OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel) OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel) OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

指定したクライアント構成ファイルを、指定したファイル マップとユーザー レベルを使用する Configuration オブジェクトとして開きます。Opens the specified client configuration file as a Configuration object that uses the specified file mapping and user level.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean) OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean) OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean) OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

指定したクライアント構成ファイルを、指定したファイル マップ、ユーザー レベル、およびプリロード オプションを使用する Configuration オブジェクトとして開きます。Opens the specified client configuration file as a Configuration object that uses the specified file mapping, user level, and preload option.

OpenMappedMachineConfiguration(ConfigurationFileMap) OpenMappedMachineConfiguration(ConfigurationFileMap) OpenMappedMachineConfiguration(ConfigurationFileMap) OpenMappedMachineConfiguration(ConfigurationFileMap)

マシン構成ファイルを、指定したファイル マップを使用する Configuration オブジェクトとして開きます。Opens the machine configuration file as a Configuration object that uses the specified file mapping.

RefreshSection(String) RefreshSection(String) RefreshSection(String) RefreshSection(String)

名前付きセクションを次回取得するときに、ディスクから再読み取りするように、名前付きセクションを更新します。Refreshes the named section so the next time that it is retrieved it will be re-read from disk.

適用対象

こちらもご覧ください