RegistryKeyとは? わかりやすく解説

RegistryKey クラス

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

名前空間: Microsoft.Win32
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public NotInheritable Class
 RegistryKey
    Inherits MarshalByRefObject
    Implements IDisposable
[ComVisibleAttribute(true)] 
public sealed class RegistryKey : MarshalByRefObject,
 IDisposable
[ComVisibleAttribute(true)] 
public ref class RegistryKey sealed : public
 MarshalByRefObject, IDisposable
/** @attribute ComVisibleAttribute(true) */ 
public final class RegistryKey extends MarshalByRefObject
 implements IDisposable
ComVisibleAttribute(true) 
public final class RegistryKey extends
 MarshalByRefObject implements IDisposable
解説解説

RegistryKey のインスタンスを取得するには、Registry クラスの静的メンバの 1 つを使用します。

レジストリは、オペレーティング システムとコンピュータ上のアプリケーションの情報を格納した中央リポジトリとして機能します。レジストリは、レジストリに格納されている要素の論理的な順序に基づいて、階層形式で編成されています。ベース レベルの項目については、Registry のトピックを参照してください。情報をレジストリに格納するときは、この情報のタイプに基づいて適切な位置を選択します。他のアプリケーションにより作成された情報を壊さないように注意してください。情報が壊れると、予測できない動作をアプリケーションが行ったり、作成したアプリケーションが悪影響を受けたりする可能性があります。

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

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

注意に関するメモ注意

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

Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows CE プラットフォームメモ : .NET Compact Framework アプリケーションでは、サブキーを削除する前に、このサブキーおよびその子サブキーの開いているすべてのインスタンスを明示的に閉じる必要があります。Windows CE によって決定されるサブキーの深さの最大値は 15 です。

使用例使用例

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

Imports Microsoft.VisualBasic
Imports System
Imports System.Security.Permissions
Imports Microsoft.Win32

<Assembly: RegistryPermissionAttribute( _
    SecurityAction.RequestMinimum, ViewAndModify := "HKEY_CURRENT_USER")>

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
using System;
using System.Security.Permissions;
using Microsoft.Win32;

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum,
    ViewAndModify = "HKEY_CURRENT_USER")]

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();
        }
    }
}
using namespace System;
using namespace System::Security::Permissions;
using namespace Microsoft::Win32;

[assembly:RegistryPermissionAttribute(SecurityAction::RequestMinimum,
ViewAndModify="HKEY_CURRENT_USER")];
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();
   }
}
継承階層継承階層
System.Object
   System.MarshalByRefObject
    Microsoft.Win32.RegistryKey
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
RegistryKey メンバ
Microsoft.Win32 名前空間
Registry クラス
RegistryHive 列挙体

RegistryKey プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ ValueCount キーの値の数を取得します。
参照参照

関連項目

RegistryKey クラス
Microsoft.Win32 名前空間
Registry クラス
RegistryHive 列挙体

RegistryKey メソッド


パブリック メソッドパブリック メソッド

  名前 説明
パブリック メソッド Close キーを閉じ、キーの内容が変更されている場合はディスクへフラッシュします。
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド CreateSubKey オーバーロードされます。 新しいサブキーを作成するか、または既存のサブキーを開きます。
パブリック メソッド DeleteSubKey オーバーロードされます。 指定したサブキーを削除します。文字列 subkey では、大文字と小文字は区別されません。
パブリック メソッド DeleteSubKeyTree サブキーとその子サブキーを再帰的に削除します。文字列 subkey では、大文字と小文字は区別されません。
パブリック メソッド DeleteValue オーバーロードされます。 指定した値をこのキーから削除します。
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。)
パブリック メソッド Flush 指定したオープン レジストリ キーのすべての属性をこのレジストリへ書き込みます。
パブリック メソッド GetAccessControl オーバーロードされます。 現在のレジストリ キーのアクセス制御セキュリティを返します。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。)
パブリック メソッド GetLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド GetSubKeyNames すべてのサブキーの名前が格納されている文字列の配列を取得します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 ( Object から継承されます。)
パブリック メソッド GetValue オーバーロードされます。 指定した名前に関連付けられている値を取得します。
パブリック メソッド GetValueKind 指定した名前に関連付けられた値のレジストリ データ型を取得します。
パブリック メソッド GetValueNames このキーに関連付けられているすべての値の名前が格納されている文字列の配列を取得します。
パブリック メソッド InitializeLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド OpenRemoteBaseKey リモート コンピュータ上にある要求されたキーを表す新しい RegistryKey を開きます。
パブリック メソッド OpenSubKey オーバーロードされます。 指定したサブキーを取得します。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。)
パブリック メソッド SetAccessControl 既存のレジストリ キーに Windows アクセス制御セキュリティを適用します。
パブリック メソッド SetValue オーバーロードされます。 レジストリ キーに名前/値ペアの値を設定します。オーバーロードに応じて、格納するデータの型または指定した RegistryValueKind に基づいてレジストリ データ型が判別されます。
パブリック メソッド ToString オーバーライドされます。 このキーの文字列形式を取得します。
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.IDisposable.Dispose 現在のキーに対して Close を実行します。
参照参照

関連項目

RegistryKey クラス
Microsoft.Win32 名前空間
Registry クラス
RegistryHive 列挙体

RegistryKey メンバ

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

RegistryKey データ型で公開されるメンバを以下の表に示します。


パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ ValueCount キーの値の数を取得します。
パブリック メソッドパブリック メソッド
  名前 説明
パブリック メソッド Close キーを閉じ、キーの内容が変更されている場合はディスクへフラッシュします。
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (MarshalByRefObject から継承されます。)
パブリック メソッド CreateSubKey オーバーロードされます。 新しいサブキーを作成するか、または既存のサブキーを開きます。
パブリック メソッド DeleteSubKey オーバーロードされます。 指定したサブキーを削除します。文字列 subkey では、大文字と小文字は区別されません。
パブリック メソッド DeleteSubKeyTree サブキーとその子サブキーを再帰的に削除します。文字列 subkey では、大文字と小文字は区別されません。
パブリック メソッド DeleteValue オーバーロードされます。 指定した値をこのキーから削除します。
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッド Flush 指定したオープン レジストリ キーのすべての属性をこのレジストリへ書き込みます。
パブリック メソッド GetAccessControl オーバーロードされます。 現在のレジストリ キーのアクセス制御セキュリティを返します。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。)
パブリック メソッド GetLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド GetSubKeyNames すべてのサブキーの名前が格納されている文字列の配列を取得します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド GetValue オーバーロードされます。 指定した名前に関連付けられている値を取得します。
パブリック メソッド GetValueKind 指定した名前に関連付けられた値のレジストリ データ型を取得します。
パブリック メソッド GetValueNames このキーに関連付けられているすべての値の名前が格納されている文字列の配列を取得します。
パブリック メソッド InitializeLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド OpenRemoteBaseKey リモート コンピュータ上にある要求されたキーを表す新しい RegistryKey を開きます。
パブリック メソッド OpenSubKey オーバーロードされます。 指定したサブキーを取得します。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。)
パブリック メソッド SetAccessControl 既存のレジストリ キーに Windows アクセス制御セキュリティを適用します。
パブリック メソッド SetValue オーバーロードされます。 レジストリ キーに名前/値ペアの値を設定します。オーバーロードに応じて、格納するデータの型または指定した RegistryValueKind に基づいてレジストリ データ型が判別されます。
パブリック メソッド ToString オーバーライドされます。 このキーの文字列形式を取得します。
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.IDisposable.Dispose 現在のキーに対して Close を実行します。
参照参照

関連項目

RegistryKey クラス
Microsoft.Win32 名前空間
Registry クラス
RegistryHive 列挙体



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「RegistryKey」の関連用語

RegistryKeyのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



RegistryKeyのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS