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 を参照してください)。 レジストリに情報を格納する場合は、格納する情報の種類に基づいて適切な場所を選択します。 他のアプリケーションによって作成された情報が破棄されないようにしてください。これは、これらのアプリケーションが予期しない動作を引き起こす可能性があり、また、独自のアプリケーションに悪影響を及ぼす可能性があるためです。

Important

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

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

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

Caution

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

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

プロパティ

名前 説明
Handle

現在のSafeRegistryHandle オブジェクトがカプセル化するレジストリ キーを表すRegistryKey オブジェクトを取得します。

Name

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

SubKeyCount

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

ValueCount

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

View

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

メソッド

名前 説明
Close()

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

CreateObjRef(Type)

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

(継承元 MarshalByRefObject)
CreateSubKey(String, Boolean, RegistryOptions)

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

CreateSubKey(String, Boolean)

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

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity)

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

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions)

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

CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity)

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

CreateSubKey(String, RegistryKeyPermissionCheck)

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

CreateSubKey(String)

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

DeleteSubKey(String, Boolean)

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

DeleteSubKey(String)

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

DeleteSubKeyTree(String, Boolean)

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

DeleteSubKeyTree(String)

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

DeleteValue(String, Boolean)

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

DeleteValue(String)

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

Dispose()

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

Equals(Object)

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

(継承元 Object)
Finalize()

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

Flush()

指定した開いているレジストリ キーのすべての属性をレジストリに書き込みます。

FromHandle(SafeRegistryHandle, RegistryView)

指定したハンドルとレジストリ ビューの設定からレジストリ キーを作成します。

FromHandle(SafeRegistryHandle)

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

GetAccessControl()

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

GetAccessControl(AccessControlSections)

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

GetHashCode()

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

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

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

(継承元 MarshalByRefObject)
GetSubKeyNames()

すべてのサブキー名を含む文字列の配列を取得します。

GetType()

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

(継承元 Object)
GetValue(String, Object, RegistryValueOptions)

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

GetValue(String, Object)

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

GetValue(String)

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

GetValueKind(String)

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

GetValueNames()

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

InitializeLifetimeService()
古い.

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

(継承元 MarshalByRefObject)
MemberwiseClone()

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

(継承元 Object)
MemberwiseClone(Boolean)

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

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

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

OpenRemoteBaseKey(RegistryHive, String, RegistryView)

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

OpenRemoteBaseKey(RegistryHive, String)

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

OpenSubKey(String, Boolean)

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

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

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

OpenSubKey(String, RegistryKeyPermissionCheck)

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

OpenSubKey(String, RegistryRights)

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

OpenSubKey(String)

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

SetAccessControl(RegistrySecurity)

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

SetValue(String, Object, RegistryValueKind)

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

SetValue(String, Object)

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

ToString()

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

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

名前 説明
IDisposable.Dispose()

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

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

拡張メソッド

名前 説明
GetAccessControl(RegistryKey, AccessControlSections)

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

GetAccessControl(RegistryKey)

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

SetAccessControl(RegistryKey, RegistrySecurity)

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

適用対象

こちらもご覧ください