RegistryKey 클래스

정의

Windows 레지스트리의 키 수준 노드를 나타냅니다. 이 클래스는 레지스트리 캡슐화입니다.

public ref class RegistryKey sealed : MarshalByRefObject, IDisposable
public sealed class RegistryKey : MarshalByRefObject, IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class RegistryKey : MarshalByRefObject, IDisposable
type RegistryKey = class
    inherit MarshalByRefObject
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type RegistryKey = class
    inherit MarshalByRefObject
    interface IDisposable
Public NotInheritable Class RegistryKey
Inherits MarshalByRefObject
Implements IDisposable
상속
특성
구현

예제

다음 코드 예제에서는 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 참조하세요.

레지스트리 키는 레지스트리에서 조직의 기본 단위이며 파일 탐색기의 폴더와 비교할 수 있습니다. 폴더에 하위 폴더가 있을 수 있는 것처럼 특정 키에는 하위 키가 있을 수 있습니다. 사용자에게 적절한 권한이 있고 키가 기본 키 또는 기본 키 바로 아래의 수준에 있지 않은 한 각 키를 삭제할 수 있습니다. 각 키에는 컴퓨터에 설치된 애플리케이션에 대한 정보 등 정보를 저장하는 데 사용되는 여러 값(파일과 비교할 수 있는 값)이 있을 수도 있습니다. 각 값은 필요한 경우 검색하거나 업데이트할 수 있는 하나의 특정 정보를 보유합니다. 예를 들어 키 HKEY_LOCAL_MACHINE\Software아래에 회사용을 만든 다음 회사에서 만드는 각 애플리케이션에 대한 하위 키를 만들 RegistryKey 수 있습니다. 각 하위 키는 색 설정, 화면 위치 및 크기 또는 인식된 파일 확장명과 같은 해당 애플리케이션과 관련된 정보를 보유합니다.

레지스트리에 저장된 정보는 다른 애플리케이션 및 사용자가 사용할 수 있으므로 보안 데이터 또는 중요한 애플리케이션 정보를 저장하는 데 사용하면 안 됩니다.

Caution

악의적인 프로그램에서 수천 개의 의미 없는 하위 키 또는 키/값 쌍을 만들 수 있는 방식으로 개체를 노출 RegistryKey 하지 마세요. 예를 들어 호출자가 임의의 키 또는 값을 입력하도록 허용하지 않습니다.

.NET Framework 4부터 레지스트리 키의 길이는 더 이상 255자로 제한되지 않습니다.

속성

Name Description
Handle

SafeRegistryHandle 현재 RegistryKey 개체가 캡슐화하는 레지스트리 키를 나타내는 개체를 가져옵니다.

Name

키의 이름을 검색합니다.

SubKeyCount

현재 키의 하위 키 수를 검색합니다.

ValueCount

키의 값 수를 검색합니다.

View

레지스트리 키를 만드는 데 사용된 뷰를 가져옵니다.

메서드

Name Description
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()

이 키의 문자열 표현을 검색합니다.

명시적 인터페이스 구현

Name Description
IDisposable.Dispose()

이 API는 제품 인프라를 지원하며 코드에서 직접 사용되지 않습니다.

현재 키에 대해 수행합니다 Close() .

적용 대상

추가 정보