다음을 통해 공유


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

설명

RegistryKeyinstance 얻으려면 클래스의 정적 멤버 Registry 중 하나를 사용합니다.

레지스트리를 컴퓨터에 운영 체제 및 애플리케이션에 대 한 정보의 중앙 저장소 역할을 합니다. 레지스트리는 그 안에 저장된 요소의 논리적 순서에 따라 계층 구조 형식으로 구성됩니다(이 계층 구조의 기본 수준 항목은 참조 Registry 하세요). 레지스트리에 정보를 저장할 때 저장되는 정보의 유형에 따라 적절한 위치를 선택합니다. 때문에 이러한 애플리케이션이 예기치 않은 문제가 발생할 수 있으며 사용자 고유의 애플리케이션에 부정적인 영향을 줄 수도 있습니다 다른 애플리케이션에서 만든 정보를 제거 하지 않도록 해야 합니다.

중요

이 형식이 구현 하는 IDisposable 인터페이스입니다. 형식을 사용 하 여 마쳤으면 직접 또는 간접적으로의 삭제 해야 있습니다. 직접 형식의 dispose 호출 해당 Dispose 의 메서드를 try/catch 블록입니다. 삭제 하지 직접, 언어 구문 같은 사용 using (C#에서) 또는 Using (Visual Basic에서는). 자세한 내용은 "를 사용 하는 개체는 구현 IDisposable" 섹션을 참조 하세요.를 IDisposable 인터페이스 항목입니다.

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

레지스트리에 저장 된 정보 다른 애플리케이션 및 사용자를 사용할 수 있고 따라서 해서는 안 보안 데이터 나 중요 한 애플리케이션 정보를 저장할 note 합니다.

주의

악의적인 프로그램이 수천 개의 의미 없는 하위 키 또는 키/값 쌍을 만들 수 있는 방식으로 개체를 노출 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)

기존 레지스트리 키의 보안 특성을 변경합니다.

적용 대상

추가 정보