RegistryKey クラス

定義

Windows レジストリのキー レベル ノードを表します。Represents a key-level node in the Windows registry. このクラスはレジストリをカプセル化します。This class is a registry encapsulation.

public ref class RegistryKey sealed : MarshalByRefObject, IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class RegistryKey : MarshalByRefObject, IDisposable
type RegistryKey = class
    inherit MarshalByRefObject
    interface IDisposable
Public NotInheritable Class RegistryKey
Inherits MarshalByRefObject
Implements IDisposable
継承
属性
実装

次のコード例は、HKEY_CURRENT_USER の下にサブキーを作成し、その内容を操作して、サブキーを削除する方法を示しています。The following code example shows how to create a subkey under HKEY_CURRENT_USER, manipulate its contents, and then delete the subkey.

using namespace System;
using namespace System::Security::Permissions;
using namespace Microsoft::Win32;

int main()
{
   // Create a subkey named Test9999 under HKEY_CURRENT_USER.
   RegistryKey ^ test9999 = Registry::CurrentUser->CreateSubKey( "Test9999" );

   // Create two subkeys under HKEY_CURRENT_USER\Test9999.
   test9999->CreateSubKey( "TestName" )->Close();
   RegistryKey ^ testSettings = test9999->CreateSubKey( "TestSettings" );

   // Create data for the TestSettings subkey.
   testSettings->SetValue( "Language", "French" );
   testSettings->SetValue( "Level", "Intermediate" );
   testSettings->SetValue( "ID", 123 );
   testSettings->Close();

   // Print the information from the Test9999 subkey.
   Console::WriteLine( "There are {0} subkeys under Test9999.", test9999->SubKeyCount.ToString() );
   array<String^>^subKeyNames = test9999->GetSubKeyNames();
   for ( int i = 0; i < subKeyNames->Length; i++ )
   {
      RegistryKey ^ tempKey = test9999->OpenSubKey( subKeyNames[ i ] );
      Console::WriteLine( "\nThere are {0} values for {1}.", tempKey->ValueCount.ToString(), tempKey->Name );
      array<String^>^valueNames = tempKey->GetValueNames();
      for ( int j = 0; j < valueNames->Length; j++ )
      {
         Console::WriteLine( "{0,-8}: {1}", valueNames[ j ], tempKey->GetValue( valueNames[ j ] )->ToString() );

      }
   }
   
   // Delete the ID value.
   testSettings = test9999->OpenSubKey( "TestSettings", true );
   testSettings->DeleteValue( "id" );

   // Verify the deletion.
   Console::WriteLine( dynamic_cast<String^>(testSettings->GetValue(  "id", "ID not found." )) );
   testSettings->Close();

   // Delete or close the new subkey.
   Console::Write( "\nDelete newly created registry key? (Y/N) " );
   if ( Char::ToUpper( Convert::ToChar( Console::Read() ) ) == 'Y' )
   {
      Registry::CurrentUser->DeleteSubKeyTree( "Test9999" );
      Console::WriteLine( "\nRegistry key {0} deleted.", test9999->Name );
   }
   else
   {
      Console::WriteLine( "\nRegistry key {0} closed.", test9999->ToString() );
      test9999->Close();
   }
}
using System;
using System.Security.Permissions;
using Microsoft.Win32;

class RegKey
{
    static void Main()
    {
        // Create a subkey named Test9999 under HKEY_CURRENT_USER.
        RegistryKey test9999 = 
            Registry.CurrentUser.CreateSubKey("Test9999");
        // Create two subkeys under HKEY_CURRENT_USER\Test9999. The
        // keys are disposed when execution exits the using statement.
        using(RegistryKey 
            testName = test9999.CreateSubKey("TestName"),
            testSettings = test9999.CreateSubKey("TestSettings"))
        {
            // Create data for the TestSettings subkey.
            testSettings.SetValue("Language", "French");
            testSettings.SetValue("Level", "Intermediate");
            testSettings.SetValue("ID", 123);
        }

        // Print the information from the Test9999 subkey.
        Console.WriteLine("There are {0} subkeys under {1}.", 
            test9999.SubKeyCount.ToString(), test9999.Name);
        foreach(string subKeyName in test9999.GetSubKeyNames())
        {
            using(RegistryKey 
                tempKey = test9999.OpenSubKey(subKeyName))
            {
                Console.WriteLine("\nThere are {0} values for {1}.", 
                    tempKey.ValueCount.ToString(), tempKey.Name);
                foreach(string valueName in tempKey.GetValueNames())
                {
                    Console.WriteLine("{0,-8}: {1}", valueName, 
                        tempKey.GetValue(valueName).ToString());
                }
            }
        }

        using(RegistryKey 
            testSettings = test9999.OpenSubKey("TestSettings", true))
        {
            // Delete the ID value.
            testSettings.DeleteValue("id");

            // Verify the deletion.
            Console.WriteLine((string)testSettings.GetValue(
                "id", "ID not found."));
        }

        // Delete or close the new subkey.
        Console.Write("\nDelete newly created registry key? (Y/N) ");
        if(Char.ToUpper(Convert.ToChar(Console.Read())) == 'Y')
        {
            Registry.CurrentUser.DeleteSubKeyTree("Test9999");
            Console.WriteLine("\nRegistry key {0} deleted.", 
                test9999.Name);
        }
        else
        {
            Console.WriteLine("\nRegistry key {0} closed.", 
                test9999.ToString());
            test9999.Close();
        }
    }
}
Imports System.Security.Permissions
Imports Microsoft.Win32

Public Class RegKey
    Shared Sub Main()

        ' Create a subkey named Test9999 under HKEY_CURRENT_USER.
        Dim test9999 As RegistryKey = _
            Registry.CurrentUser.CreateSubKey("Test9999")

        ' Create two subkeys under HKEY_CURRENT_USER\Test9999.
        test9999.CreateSubKey("TestName").Close()
        Dim testSettings As RegistryKey = _
            test9999.CreateSubKey("TestSettings")

        ' Create data for the TestSettings subkey.
        testSettings.SetValue("Language", "French")
        testSettings.SetValue("Level", "Intermediate")
        testSettings.SetValue("ID", 123)
        testSettings.Close()

        ' Print the information from the Test9999 subkey.
        Console.WriteLine("There are {0} subkeys under Test9999.", _
            test9999.SubKeyCount.ToString())
        For Each subKeyName As String In test9999.GetSubKeyNames()
            Dim tempKey As RegistryKey = _
                test9999.OpenSubKey(subKeyName)
            Console.WriteLine(vbCrLf & "There are {0} values for " & _
                "{1}.", tempKey.ValueCount.ToString(), tempKey.Name)
            For Each valueName As String In tempKey.GetValueNames()
                Console.WriteLine("{0,-8}: {1}", valueName, _
                    tempKey.GetValue(valueName).ToString())
            Next
        Next

        ' Delete the ID value.
        testSettings = test9999.OpenSubKey("TestSettings", True)
        testSettings.DeleteValue("id")

        ' Verify the deletion.
        Console.WriteLine(CType(testSettings.GetValue( _
            "id", "ID not found."), String))
        testSettings.Close()

        ' Delete or close the new subkey.
        Console.Write(vbCrLf & "Delete newly created " & _
            "registry key? (Y/N) ")
        If Char.ToUpper(Convert.ToChar(Console.Read())) = "Y"C Then
            Registry.CurrentUser.DeleteSubKeyTree("Test9999")
            Console.WriteLine(vbCrLf & "Registry key {0} deleted.", _
                test9999.Name)
        Else
            Console.WriteLine(vbCrLf & "Registry key {0} closed.", _
                test9999.ToString())
            test9999.Close()
        End If
   
    End Sub
End Class

注釈

RegistryKeyインスタンスを取得するには、 Registryクラスの静的メンバーの1つを使用します。To get an instance of RegistryKey, use one of the static members of the Registry class.

レジストリは、コンピューター上のオペレーティングシステムとアプリケーションの情報の中央リポジトリとして機能します。The registry acts as a central repository of information for the operating system and the applications on a computer. レジストリは、その中に格納されている要素の論理的な順序に基づいて、階層形式でRegistry編成されます (この階層の基本レベルの項目については、「」を参照してください)。The registry is organized in a hierarchical format, based on a logical ordering of the elements stored within it (please see Registry for the base-level items in this hierarchy). レジストリに情報を格納する場合は、保存する情報の種類に基づいて適切な場所を選択します。When storing information in the registry, select the appropriate location based on the type of information being stored. 他のアプリケーションによって作成された情報が破棄されないようにしてください。これにより、これらのアプリケーションは予期しない動作を引き起こす可能性があり、独自のアプリケーションに悪影響を及ぼす可能性があります。Be sure to avoid destroying information created by other applications, because this can cause those applications to exhibit unexpected behavior, and can also have an adverse effect upon your own application.

重要

この型は IDisposable インターフェイスを実装します。This type implements the IDisposable interface. 型の使用が完了したら、直接的または間接的に型を破棄する必要があります。When you have finished using the type, you should dispose of it either directly or indirectly. 直接的に型を破棄するには、try / catch ブロック内で Dispose メソッドを呼び出します。To dispose of the type directly, call its Dispose method in a try/catch block. 間接的に型を破棄するには、using (C# の場合) または Using (Visual Basic 言語) などの言語構成要素を使用します。To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). 詳細については、IDisposable インターフェイスに関するトピック内の「IDisposable を実装するオブジェクトの使用」セクションを参照してください。For more information, see the "Using an Object that Implements IDisposable" section in the IDisposable interface topic.

レジストリキーは、レジストリ内の組織の基本単位であり、エクスプローラーのフォルダーと比較できます。Registry keys are the base unit of organization in the registry, and can be compared to folders in File Explorer. フォルダーにサブフォルダーを含めることができるのと同じように、特定のキーにサブキーを含めることができます。A particular key can have subkeys, just as a folder can have subfolders. 各キーは、ユーザーが適切なアクセス許可を持っていて、キーが基本キーではないか、基本キーの直下のレベルにある限り、削除できます。Each key can be deleted, as long as the user has the appropriate permissions to do so, and the key is not a base key or at the level directly under the base keys. また、各キーには複数の値を関連付けることができます (値はファイルと比較できます)。たとえば、コンピューターにインストールされているアプリケーションに関する情報など、情報を格納するために使用されます。Each key can also have multiple values associated with it (a value can be compared to a file), which are used to store the information - for example, information about an application installed on the computer. 各値には1つの特定の情報が保持され、必要に応じて取得または更新できます。Each value holds one particular piece of information, which can be retrieved or updated when required. たとえば、会社用のをRegistryKey 、キー HKEY_LOCAL_MACHINE\Software の下に作成し、会社が作成するアプリケーションごとにサブキーを作成することができます。For instance, you can create a RegistryKey for your company, under the key HKEY_LOCAL_MACHINE\Software, and then a subkey for each application that your company creates. 各サブキーには、色の設定、画面の位置とサイズ、認識されたファイル拡張子など、そのアプリケーション固有の情報が格納されます。Each subkey holds the information specific to that application, such as color settings, screen location and size, or recognized file extensions.

レジストリに格納されている情報は、他のアプリケーションやユーザーが使用できるため、セキュリティデータや重要なアプリケーションの情報を格納するためには使用できないことに注意してください。Note that information stored in the registry is available to other applications and users, and therefore should not be used to store security data or critical application information.

注意事項

悪意のあるRegistryKeyプログラムによって何千もの無意味なサブキーまたはキーと値のペアが作成されるような方法でオブジェクトを公開しないでください。Do not expose RegistryKey objects in such a way that a malicious program could create thousands of meaningless subkeys or key/value pairs. たとえば、呼び出し元が任意のキーまたは値を入力することを許可しないでください。For example, do not allow callers to enter arbitrary keys or values.

以降で.NET Framework 4.NET Framework 4は、レジストリキーの長さが255文字に制限されなくなりました。Starting in the .NET Framework 4.NET Framework 4, the length of a registry key is no longer limited to 255 characters.

プロパティ

Handle

現在の SafeRegistryHandle オブジェクトによってカプセル化されているレジストリ キーを表す RegistryKey オブジェクトを取得します。Gets a SafeRegistryHandle object that represents the registry key that the current RegistryKey object encapsulates.

Name

キーの名前を取得します。Retrieves the name of the key.

SubKeyCount

現在のキーのサブキーの数を取得します。Retrieves the count of subkeys of the current key.

ValueCount

キーの値の数を取得します。Retrieves the count of values in the key.

View

レジストリ キーの作成に使用されたビューを取得します。Gets the view that was used to create the registry key.

メソッド

Close()

キーを閉じ、キーの内容が変更されている場合はディスクへフラッシュします。Closes the key and flushes it to disk if its contents have been modified.

CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(継承元 MarshalByRefObject)
CreateSubKey(String)

新しいサブキーを作成するか、または既存のサブキーを書き込みアクセスで開きます。Creates a new subkey or opens an existing subkey for write access.

CreateSubKey(String, Boolean)

指定したアクセス権を持つ、新しいサブキーを作成するか、既存のサブキーを開きます。Creates a new subkey or opens an existing subkey with the specified access. .NET Framework 4.6 以降で使用できます。Available starting with .NET Framework 4.6.

CreateSubKey(String, Boolean, RegistryOptions)

指定したアクセス権を持つ、新しいサブキーを作成するか、既存のサブキーを開きます。Creates a new subkey or opens an existing subkey with the specified access. .NET Framework 4.6 以降で使用できます。Available starting with .NET Framework 4.6.

CreateSubKey(String, RegistryKeyPermissionCheck)

指定されたアクセス許可チェック オプションを使用して、新しいサブキーを作成するか、既存のサブキーを書き込みアクセスで開きます。Creates a new subkey or opens an existing subkey for write access, using the specified permission check option.

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions)

指定されたアクセス許可チェック オプションおよびレジストリ オプションを使用して、サブキーを作成するか、サブキーを書き込みアクセスで開きます。Creates a subkey or opens a subkey for write access, using the specified permission check and registry options.

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity)

指定されたアクセス許可チェック オプション、レジストリ オプション、およびレジストリ セキュリティを使用して、サブキーを作成するか、サブキーを書き込みアクセスで開きます。Creates a subkey or opens a subkey for write access, using the specified permission check option, registry option, and registry security.

CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity)

指定されたアクセス許可チェック オプションおよびレジストリ セキュリティを使用して、新しいサブキーを作成するか、既存のサブキーを書き込みアクセスで開きます。Creates a new subkey or opens an existing subkey for write access, using the specified permission check option and registry security.

DeleteSubKey(String)

指定したサブキーを削除します。Deletes the specified subkey.

DeleteSubKey(String, Boolean)

指定したサブキーを削除します。また、サブキーが見つからない場合に例外を発生させるかどうかを指定します。Deletes the specified subkey, and specifies whether an exception is raised if the subkey is not found.

DeleteSubKeyTree(String)

サブキーとその子サブキーを再帰的に削除します。Deletes a subkey and any child subkeys recursively.

DeleteSubKeyTree(String, Boolean)

指定されたサブキーとその子サブキーを再帰的に削除します。サブキーが見つからなかった場合に例外を発生させるかどうかを指定します。Deletes the specified subkey and any child subkeys recursively, and specifies whether an exception is raised if the subkey is not found.

DeleteValue(String)

指定した値をこのキーから削除します。Deletes the specified value from this key.

DeleteValue(String, Boolean)

指定した値をこのキーから削除します。また、値が見つからない場合に例外を発生させるかどうかを指定します。Deletes the specified value from this key, and specifies whether an exception is raised if the value is not found.

Dispose()

RegistryKey クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。Releases all resources used by the current instance of the RegistryKey class.

Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)
Finalize()

キーを閉じ、内容が変更されている場合はディスクへフラッシュします。Closes the key and flushes it to disk if the contents have been modified.

Flush()

指定したオープン レジストリ キーのすべての属性をこのレジストリへ書き込みます。Writes all the attributes of the specified open registry key into the registry.

FromHandle(SafeRegistryHandle)

指定されたハンドルからレジストリ キーを作成します。Creates a registry key from a specified handle.

FromHandle(SafeRegistryHandle, RegistryView)

指定されたハンドルおよびレジストリ ビュー設定に基づいてレジストリ キーを作成します。Creates a registry key from a specified handle and registry view setting.

GetAccessControl()

現在のレジストリ キーのアクセス制御セキュリティを返します。Returns the access control security for the current registry key.

GetAccessControl(AccessControlSections)

現在のレジストリ キーについて、指定されたセクションのアクセス制御セキュリティを返します。Returns the specified sections of the access control security for the current registry key.

GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetLifetimeService()

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(継承元 MarshalByRefObject)
GetSubKeyNames()

すべてのサブキーの名前が格納されている文字列の配列を取得します。Retrieves an array of strings that contains all the subkey names.

GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
GetValue(String)

指定した名前に関連付けられている値を取得します。Retrieves the value associated with the specified name. 名前/値ペアがレジストリに存在しない場合、null を返します。Returns null if the name/value pair does not exist in the registry.

GetValue(String, Object)

指定した名前に関連付けられている値を取得します。Retrieves the value associated with the specified name. 名前が見つからない場合、設定されている既定値を返します。If the name is not found, returns the default value that you provide.

GetValue(String, Object, RegistryValueOptions)

指定した名前に関連付けられている値を、取得オプションを指定して取得します。Retrieves the value associated with the specified name and retrieval options. 名前が見つからない場合、設定されている既定値を返します。If the name is not found, returns the default value that you provide.

GetValueKind(String)

指定した名前に関連付けられた値のレジストリ データ型を取得します。Retrieves the registry data type of the value associated with the specified name.

GetValueNames()

このキーに関連付けられているすべての値の名前が格納されている文字列の配列を取得します。Retrieves an array of strings that contains all the value names associated with this key.

InitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。Obtains a lifetime service object to control the lifetime policy for this instance.

(継承元 MarshalByRefObject)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。Creates a shallow copy of the current MarshalByRefObject object.

(継承元 MarshalByRefObject)
OpenBaseKey(RegistryHive, RegistryView)

ローカル コンピューター上にある要求されたキーを表す新しい RegistryKey を、指定されたビューで開きます。Opens a new RegistryKey that represents the requested key on the local machine with the specified view.

OpenRemoteBaseKey(RegistryHive, String)

リモート コンピューター上にある要求されたキーを表す新しい RegistryKey を開きます。Opens a new RegistryKey that represents the requested key on a remote machine.

OpenRemoteBaseKey(RegistryHive, String, RegistryView)

リモート コンピューター上にある要求されたキーを表す新しいレジストリ キーを、指定されたビューで開きます。Opens a new registry key that represents the requested key on a remote machine with the specified view.

OpenSubKey(String)

サブキーを読み取り専用で取得します。Retrieves a subkey as read-only.

OpenSubKey(String, Boolean)

指定したサブキーを取得します。また、キーに書き込みアクセスを適用するかどうかを指定します。Retrieves a specified subkey, and specifies whether write access is to be applied to the key.

OpenSubKey(String, RegistryKeyPermissionCheck)

指定したサブキーを読み取りアクセスまたは読み取り/書き込みアクセス用に取得します。Retrieves the specified subkey for read or read/write access.

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

指定したアクセス権を要求して、指定したサブキーを読み取りアクセスまたは読み取り/書き込みアクセス用に取得します。Retrieves the specified subkey for read or read/write access, requesting the specified access rights.

OpenSubKey(String, RegistryRights)

指定された名前とアクセス権を持つサブキーを取得します。Retrieves a subkey with the specified name and access rights. .NET Framework 4.6 以降で使用できます。Available starting with .NET Framework 4.6.

SetAccessControl(RegistrySecurity)

既存のレジストリ キーに Windows アクセス制御セキュリティを適用します。Applies Windows access control security to an existing registry key.

SetValue(String, Object)

指定した名前/値ペアを設定します。Sets the specified name/value pair.

SetValue(String, Object, RegistryValueKind)

指定したレジストリ データ型を使用して、レジストリ キーに名前/値ペアの値を設定します。Sets the value of a name/value pair in the registry key, using the specified registry data type.

ToString()

このキーの文字列形式を取得します。Retrieves a string representation of this key.

明示的なインターフェイスの実装

IDisposable.Dispose()

現在のキーに対して Close() を実行します。Performs a Close() on the current key.

拡張メソッド

GetAccessControl(RegistryKey)
GetAccessControl(RegistryKey, AccessControlSections)
SetAccessControl(RegistryKey, RegistrySecurity)

適用対象

こちらもご覧ください