RegistryKey クラス

定義

Windows レジストリのキー レベル ノードを表します。 このクラスはレジストリをカプセル化します。

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

次のコード例は、HKEY_CURRENT_USERの下にサブキーを作成し、その内容を操作し、サブキーを削除する方法を示しています。

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 使用します。

レジストリは、オペレーティング システムとコンピューター上のアプリケーションの情報の中央リポジトリとして機能します。 レジストリは、その中に格納されている要素の論理的な順序に基づいて階層形式で整理されています (この階層内の基本レベルの項目については、こちらをご覧 Registry ください)。 レジストリに情報を格納する場合は、格納する情報の種類に基づいて適切な場所を選択します。 他のアプリケーションによって作成された情報が破棄されないようにしてください。これは、これらのアプリケーションが予期しない動作を引き起こす可能性があり、また、独自のアプリケーションに悪影響を及ぼす可能性があるためです。

重要

この型は IDisposable インターフェイスを実装します。 型の使用が完了したら、直接的または間接的に型を破棄する必要があります。 直接的に型を破棄するには、try/catch ブロック内で Dispose メソッドを呼び出します。 間接的に型を破棄するには、using (C# の場合) または Using (Visual Basic 言語) などの言語構成要素を使用します。 詳細については、IDisposable インターフェイスに関するトピック内の「IDisposable を実装するオブジェクトの使用」セクションを参照してください。

レジストリ キーは、レジストリ内のorganizationの基本単位であり、エクスプローラー内のフォルダーと比較できます。 フォルダーにサブフォルダーを含めることができるのと同様に、特定のキーにはサブキーを含めることができます。 各キーは、ユーザーが適切なアクセス許可を持ち、キーがベース キーでも、ベース キーのすぐ下のレベルで行われる場合でも削除できます。 各キーには、複数の値を関連付けることもできます (値はファイルと比較できます)。この値は、情報 (たとえば、コンピューターにインストールされているアプリケーションに関する情報) を格納するために使用されます。 各値には、必要に応じて取得または更新できる特定の情報が 1 つ保持されます。 たとえば、キー HKEY_LOCAL_MACHINE\Software の下に会社の を作成し、会社が作成する各アプリケーションのサブキーを作成 RegistryKey できます。 各サブキーには、色の設定、画面の場所とサイズ、認識されたファイル拡張子など、そのアプリケーションに固有の情報が保持されます。

レジストリに格納されている情報は他のアプリケーションやユーザーが使用できるため、セキュリティ データや重要なアプリケーション情報を格納するために使用しないでください。

注意事項

悪意のあるプログラムが何千もの無意味なサブキーやキーと値のペアを作成するような方法でオブジェクトを公開 RegistryKey しないでください。 たとえば、呼び出し元が任意のキーまたは値を入力できないようにします。

.NET Framework 4 以降では、レジストリ キーの長さは 255 文字に制限されなくなります。

プロパティ

Handle

現在の SafeRegistryHandle オブジェクトによってカプセル化されているレジストリ キーを表す RegistryKey オブジェクトを取得します。

Name

キーの名前を取得します。

SubKeyCount

現在のキーのサブキーの数を取得します。

ValueCount

キーの値の数を取得します。

View

レジストリ キーの作成に使用されたビューを取得します。

メソッド

Close()

キーを閉じ、キーの内容が変更されている場合はディスクへフラッシュします。

CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。

(継承元 MarshalByRefObject)
CreateSubKey(String)

新しいサブキーを作成するか、または既存のサブキーを書き込みアクセスで開きます。

CreateSubKey(String, Boolean)

指定したアクセス権を持つ、新しいサブキーを作成するか、既存のサブキーを開きます。 .NET Framework 4.6 以降で使用できます。

CreateSubKey(String, Boolean, RegistryOptions)

指定したアクセス権を持つ、新しいサブキーを作成するか、既存のサブキーを開きます。 .NET Framework 4.6 以降で使用できます。

CreateSubKey(String, RegistryKeyPermissionCheck)

指定されたアクセス許可チェック オプションを使用して、新しいサブキーを作成するか、既存のサブキーを書き込みアクセスで開きます。

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions)

指定されたアクセス許可チェック オプションおよびレジストリ オプションを使用して、サブキーを作成するか、サブキーを書き込みアクセスで開きます。

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity)

指定されたアクセス許可チェック オプション、レジストリ オプション、およびレジストリ セキュリティを使用して、サブキーを作成するか、サブキーを書き込みアクセスで開きます。

CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity)

指定されたアクセス許可チェック オプションおよびレジストリ セキュリティを使用して、新しいサブキーを作成するか、既存のサブキーを書き込みアクセスで開きます。

DeleteSubKey(String)

指定したサブキーを削除します。

DeleteSubKey(String, Boolean)

指定したサブキーを削除します。また、サブキーが見つからない場合に例外を発生させるかどうかを指定します。

DeleteSubKeyTree(String)

サブキーとその子サブキーを再帰的に削除します。

DeleteSubKeyTree(String, Boolean)

指定されたサブキーとその子サブキーを再帰的に削除します。サブキーが見つからなかった場合に例外を発生させるかどうかを指定します。

DeleteValue(String)

指定した値をこのキーから削除します。

DeleteValue(String, Boolean)

指定した値をこのキーから削除します。また、値が見つからない場合に例外を発生させるかどうかを指定します。

Dispose()

RegistryKey クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
Finalize()

キーを閉じ、内容が変更されている場合はディスクへフラッシュします。

Flush()

指定したオープン レジストリ キーのすべての属性をこのレジストリへ書き込みます。

FromHandle(SafeRegistryHandle)

指定されたハンドルからレジストリ キーを作成します。

FromHandle(SafeRegistryHandle, RegistryView)

指定されたハンドルおよびレジストリ ビュー設定に基づいてレジストリ キーを作成します。

GetAccessControl()

現在のレジストリ キーのアクセス制御セキュリティを返します。

GetAccessControl(AccessControlSections)

現在のレジストリ キーについて、指定されたセクションのアクセス制御セキュリティを返します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetLifetimeService()
古い.

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
GetSubKeyNames()

すべてのサブキーの名前が格納されている文字列の配列を取得します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetValue(String)

指定した名前に関連付けられている値を取得します。 名前/値ペアがレジストリに存在しない場合、null を返します。

GetValue(String, Object)

指定した名前に関連付けられている値を取得します。 名前が見つからない場合、設定されている既定値を返します。

GetValue(String, Object, RegistryValueOptions)

指定した名前に関連付けられている値を、取得オプションを指定して取得します。 名前が見つからない場合、設定されている既定値を返します。

GetValueKind(String)

指定した名前に関連付けられた値のレジストリ データ型を取得します。

GetValueNames()

このキーに関連付けられているすべての値の名前が格納されている文字列の配列を取得します。

InitializeLifetimeService()
古い.

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。

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

ローカル コンピューター上にある要求されたキーを表す新しい RegistryKey を、指定されたビューで開きます。

OpenRemoteBaseKey(RegistryHive, String)

リモート コンピューター上にある要求されたキーを表す新しい RegistryKey を開きます。

OpenRemoteBaseKey(RegistryHive, String, RegistryView)

リモート コンピューター上にある要求されたキーを表す新しいレジストリ キーを、指定されたビューで開きます。

OpenSubKey(String)

サブキーを読み取り専用で取得します。

OpenSubKey(String, Boolean)

指定したサブキーを取得します。また、キーに書き込みアクセスを適用するかどうかを指定します。

OpenSubKey(String, RegistryKeyPermissionCheck)

指定したサブキーを読み取りアクセスまたは読み取り/書き込みアクセス用に取得します。

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

指定したアクセス権を要求して、指定したサブキーを読み取りアクセスまたは読み取り/書き込みアクセス用に取得します。

OpenSubKey(String, RegistryRights)

指定された名前とアクセス権を持つサブキーを取得します。 .NET Framework 4.6 以降で使用できます。

SetAccessControl(RegistrySecurity)

既存のレジストリ キーに Windows アクセス制御セキュリティを適用します。

SetValue(String, Object)

指定した名前/値ペアを設定します。

SetValue(String, Object, RegistryValueKind)

指定したレジストリ データ型を使用して、レジストリ キーに名前/値ペアの値を設定します。

ToString()

このキーの文字列形式を取得します。

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

IDisposable.Dispose()

この API は製品インフラストラクチャをサポートします。コードから直接使用するものではありません。

現在のキーに対して Close() を実行します。

拡張メソッド

GetAccessControl(RegistryKey)

レジストリ キーのセキュリティ情報を返します。

GetAccessControl(RegistryKey, AccessControlSections)

レジストリ キーのセキュリティ情報を返します。

SetAccessControl(RegistryKey, RegistrySecurity)

既存のレジストリ キーのセキュリティ属性を変更します。

適用対象

こちらもご覧ください