RegistryKey.OpenSubKey RegistryKey.OpenSubKey RegistryKey.OpenSubKey RegistryKey.OpenSubKey Method

정의

지정된 하위 키를 검색합니다.Retrieves the specified subkey.

오버로드

OpenSubKey(String, Boolean) OpenSubKey(String, Boolean) OpenSubKey(String, Boolean) OpenSubKey(String, Boolean)

지정된 하위 키를 검색하고 키에 쓰기 액세스를 적용할지 여부를 지정합니다.Retrieves a specified subkey, and specifies whether write access is to be applied to the key.

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

지정된 액세스 권한을 요청하여 읽기 또는 읽기/쓰기 권한으로 지정된 하위 키를 검색합니다.Retrieves the specified subkey for read or read/write access, requesting the specified access rights.

OpenSubKey(String, RegistryRights) OpenSubKey(String, RegistryRights) OpenSubKey(String, RegistryRights) OpenSubKey(String, RegistryRights)

지정된 이름 및 액세스 권한으로 하위 키를 검색합니다.Retrieves a subkey with the specified name and access rights. .NET Framework 4.6부터 사용할 수 있습니다.Available starting with .NET Framework 4.6.

OpenSubKey(String) OpenSubKey(String) OpenSubKey(String) OpenSubKey(String)

하위 키를 읽기 전용으로 검색합니다.Retrieves a subkey as read-only.

OpenSubKey(String, RegistryKeyPermissionCheck) OpenSubKey(String, RegistryKeyPermissionCheck) OpenSubKey(String, RegistryKeyPermissionCheck) OpenSubKey(String, RegistryKeyPermissionCheck)

읽기 또는 읽기/쓰기 권한으로 지정된 하위 키를 검색합니다.Retrieves the specified subkey for read or read/write access.

OpenSubKey(String, Boolean) OpenSubKey(String, Boolean) OpenSubKey(String, Boolean) OpenSubKey(String, Boolean)

지정된 하위 키를 검색하고 키에 쓰기 액세스를 적용할지 여부를 지정합니다.Retrieves a specified subkey, and specifies whether write access is to be applied to the key.

public:
 Microsoft::Win32::RegistryKey ^ OpenSubKey(System::String ^ name, bool writable);
public Microsoft.Win32.RegistryKey OpenSubKey (string name, bool writable);
member this.OpenSubKey : string * bool -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String, writable As Boolean) As RegistryKey

매개 변수

name
String String String String

열려는 하위 키의 이름 또는 경로입니다.Name or path of the subkey to open.

writable
Boolean Boolean Boolean Boolean

키에 대한 쓰기 권한이 필요하면 true로 설정합니다.Set to true if you need write access to the key.

반환

요청된 하위 키이거나, 작업에 실패하면 null입니다.The subkey requested, or null if the operation failed.

예외

RegistryKey가 닫힌 경우. 닫힌 키는 액세스할 수 없습니다.The RegistryKey is closed (closed keys cannot be accessed).

사용자에게 지정된 모드에서 레지스트리 키에 액세스하는 데 필요한 권한이 없는 경우The user does not have the permissions required to access the registry key in the specified mode.

예제

다음 코드 예제에서는 테스트 키를 만들고 사용 하는 OpenSubKey 연 메서드의 두 오버 로드를 보여 주는 방법입니다.The following code example creates a test key and uses the OpenSubKey method to open it, demonstrating both overloads of the method.

#using <Microsoft.VisualBasic.dll>

using namespace System;
using namespace Microsoft::Win32;
using namespace Microsoft::VisualBasic;

int main()
{
    // Delete and recreate the test key.
    Registry::CurrentUser->DeleteSubKey( L"RegistryOpenSubKeyExample", false );
    RegistryKey ^ rk = Registry::CurrentUser->CreateSubKey( L"RegistryOpenSubKeyExample" );
    rk->Close();

    // Obtain an instance of RegistryKey for the CurrentUser registry
    // root.
    RegistryKey ^ rkCurrentUser = Registry::CurrentUser;

    // Obtain the test key (read-only) and display it.
    RegistryKey ^ rkTest = rkCurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample" );
    Console::WriteLine( L"Test key: {0}", rkTest );
    rkTest->Close();
    rkCurrentUser->Close();

    // Obtain the test key in one step, using the CurrentUser registry
    // root.
    rkTest = Registry::CurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample" );
    Console::WriteLine( L"Test key: {0}", rkTest );
    rkTest->Close();

    // Open the test key in read/write mode.
    rkTest = Registry::CurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample", true );
    rkTest->SetValue( L"TestName", L"TestValue" );
    Console::WriteLine( L"Test value for TestName: {0}", rkTest->GetValue( L"TestName" ) );
    rkTest->Close();

    return 0;
} //Main
using System;
using Microsoft.Win32;
using Microsoft.VisualBasic;

public class Example
{
    public static void Main()
    {
        // Delete and recreate the test key.
        Registry.CurrentUser.DeleteSubKey("RegistryOpenSubKeyExample", false);
        RegistryKey rk = Registry.CurrentUser.CreateSubKey("RegistryOpenSubKeyExample");
        rk.Close();

        // Obtain an instance of RegistryKey for the CurrentUser registry 
        // root. 
        RegistryKey rkCurrentUser = Registry.CurrentUser;

        // Obtain the test key (read-only) and display it.
        RegistryKey rkTest = rkCurrentUser.OpenSubKey("RegistryOpenSubKeyExample");
        Console.WriteLine("Test key: {0}", rkTest);
        rkTest.Close();
        rkCurrentUser.Close();

        // Obtain the test key in one step, using the CurrentUser registry 
        // root.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample");
        Console.WriteLine("Test key: {0}", rkTest);
        rkTest.Close();

        // Open the test key in read/write mode.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample", true);
        rkTest.SetValue("TestName", "TestValue");
        Console.WriteLine("Test value for TestName: {0}", rkTest.GetValue("TestName"));
        rkTest.Close();
    } //Main
} //Example
Imports Microsoft.Win32

Public Class Example
    Public Shared Sub Main()
        ' Delete and recreate the test key.
        Registry.CurrentUser.DeleteSubKey("RegistryOpenSubKeyExample", False)
        Dim rk As RegistryKey = Registry.CurrentUser.CreateSubKey("RegistryOpenSubKeyExample")
        rk.Close

        ' Obtain an instance of RegistryKey for the CurrentUser registry 
        ' root. 
        Dim rkCurrentUser As RegistryKey = Registry.CurrentUser

        ' Obtain the test key (read-only) and display it.
        Dim rkTest As RegistryKey = rkCurrentUser.OpenSubKey("RegistryOpenSubKeyExample")
        Console.WriteLine("Test key: {0}", rkTest)
        rkTest.Close
        rkCurrentUser.Close

        ' Obtain the test key in one step, using the CurrentUser registry 
        ' root.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample")
        Console.WriteLine("Test key: {0}", rkTest)
        rkTest.Close

        ' Obtain the test key in read/write mode.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample", True)
        rkTest.SetValue("TestName", "TestValue")
        Console.WriteLine("Test value for TestName: {0}", rkTest.GetValue("TestName"))
        rkTest.Close
    End Sub
End Class

설명

요청된 된 키를 존재 하지 않는 경우이 메서드는 반환 null 대신 예외를 throw 합니다.If the requested key does not exist, this method returns null instead of throwing an exception.

하는 경우 writabletrue읽기 및 쓰기에 대 한 키를 열 수를, 읽기 전용으로 키를 열 수이 고, 그렇지 합니다.If writable is true, the key will be opened for reading and writing, otherwise, the key will be opened as read-only.

사용 하기 위해 합니다 OpenSubKey 메서드를 인스턴스에 있어야 합니다는 RegistryKey 메서드.In order to use the OpenSubKey method, you must have an instance of the RegistryKey method. 인스턴스를 가져오려면 RegistryKey의 정적 멤버 중 하나를 사용 합니다 Registry 클래스입니다.To get an instance of RegistryKey, use one of the static members of the Registry class.

보안

RegistryPermission
지정 된 레지스트리 키를 읽을 수 있습니다.for the ability to read the specified registry key. 연결 된 열거형: ReadAssociated enumeration: Read

SecurityPermission
경우에 지정 된 레지스트리 키에 액세스할 수 있도록 원격 키 것입니다.for the ability to access the specified registry key if it is a remote key. 연결 된 열거형: UnmanagedCodeAssociated enumeration: UnmanagedCode

추가 정보

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

지정된 액세스 권한을 요청하여 읽기 또는 읽기/쓰기 권한으로 지정된 하위 키를 검색합니다.Retrieves the specified subkey for read or read/write access, requesting the specified access rights.

public:
 Microsoft::Win32::RegistryKey ^ OpenSubKey(System::String ^ name, Microsoft::Win32::RegistryKeyPermissionCheck permissionCheck, System::Security::AccessControl::RegistryRights rights);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey OpenSubKey (string name, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, System.Security.AccessControl.RegistryRights rights);
member this.OpenSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck * System.Security.AccessControl.RegistryRights -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String, permissionCheck As RegistryKeyPermissionCheck, rights As RegistryRights) As RegistryKey

매개 변수

name
String String String String

만들거나 열 하위 키의 이름 또는 경로입니다.The name or path of the subkey to create or open.

permissionCheck
RegistryKeyPermissionCheck RegistryKeyPermissionCheck RegistryKeyPermissionCheck RegistryKeyPermissionCheck

키가 읽기 또는 읽기/쓰기 권한으로 열려 있는지를 지정하는 열거형 값 중 하나입니다.One of the enumeration values that specifies whether the key is opened for read or read/write access.

rights
RegistryRights RegistryRights RegistryRights RegistryRights

원하는 보안 액세스를 지정하는 열거형 값의 비트 조합입니다.A bitwise combination of enumeration values that specifies the desired security access.

반환

요청된 하위 키이거나, 작업에 실패하면 null입니다.The subkey requested, or null if the operation failed.

예외

permissionCheck에 잘못된 값이 포함된 경우permissionCheck contains an invalid value.

RegistryKey가 닫힌 경우. 닫힌 키는 액세스할 수 없습니다.The RegistryKey is closed (closed keys cannot be accessed).

rights에 잘못된 레지스트리 권한 값이 포함된 경우rights includes invalid registry rights values.

또는-or- 사용자에게 요청된 권한이 없는 경우The user does not have the requested permissions.

설명

이 메서드가 반환 하는 예외를 throw 하는 대신 null 요청 된 키가 없는 경우.Rather than throwing an exception, this method returns null if the requested key does not exist.

경우 permissionCheck 됩니다 RegistryKeyPermissionCheck.ReadWriteSubTree, 경우 키 읽기 및 쓰기용으로 열려 permissionCheck 됩니다 RegistryKeyPermissionCheck.ReadSubTree 또는 RegistryKeyPermissionCheck.Default, 부모 키로 열리지 않았으면 읽기에 대 한 키가 열리는 RegistryKeyPermissionCheck.ReadWriteSubTree.If permissionCheck is RegistryKeyPermissionCheck.ReadWriteSubTree, the key is opened for reading and writing; if permissionCheck is RegistryKeyPermissionCheck.ReadSubTree or RegistryKeyPermissionCheck.Default, the key is opened for reading unless the parent key was opened with RegistryKeyPermissionCheck.ReadWriteSubTree.

에 지정 된 액세스 permissionCheck 에 대해 지정 된 액세스 권한 보다 우선 rights합니다.The access specified for permissionCheck takes precedence over the access specified for rights. 예를 들어 지정 하는 경우 RegistryKeyPermissionCheck.ReadSubTree 에 대 한 permissionCheck 하 고 RegistryRights.WriteKey 에 대 한 rights, 예외를 throw 하는 하위 키를 작성 하려고 합니다.For example, if you specify RegistryKeyPermissionCheck.ReadSubTree for permissionCheck and RegistryRights.WriteKey for rights, an attempt to write to the subkey throws an exception.

사용 하기 위해 합니다 OpenSubKey 메서드를 인스턴스에 있어야 합니다는 RegistryKey 클래스입니다.In order to use the OpenSubKey method, you must have an instance of the RegistryKey class. 인스턴스를 가져오려면 RegistryKey의 정적 멤버 중 하나를 사용 합니다 Registry 클래스입니다.To get an instance of RegistryKey, use one of the static members of the Registry class.

보안

RegistryPermission
지정 된 레지스트리 키를 읽을 수 있습니다.for the ability to read the specified registry key. 연결 된 열거형: ReadAssociated enumeration: Read

SecurityPermission
경우에 지정 된 레지스트리 키에 액세스할 수 있도록 원격 키 것입니다.for the ability to access the specified registry key if it is a remote key. 연결 된 열거형: UnmanagedCodeAssociated enumeration: UnmanagedCode

추가 정보

OpenSubKey(String, RegistryRights) OpenSubKey(String, RegistryRights) OpenSubKey(String, RegistryRights) OpenSubKey(String, RegistryRights)

지정된 이름 및 액세스 권한으로 하위 키를 검색합니다.Retrieves a subkey with the specified name and access rights. .NET Framework 4.6부터 사용할 수 있습니다.Available starting with .NET Framework 4.6.

public:
 Microsoft::Win32::RegistryKey ^ OpenSubKey(System::String ^ name, System::Security::AccessControl::RegistryRights rights);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey OpenSubKey (string name, System.Security.AccessControl.RegistryRights rights);
member this.OpenSubKey : string * System.Security.AccessControl.RegistryRights -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String, rights As RegistryRights) As RegistryKey

매개 변수

name
String String String String

만들거나 열 하위 키의 이름 또는 경로입니다.The name or path of the subkey to create or open.

rights
RegistryRights RegistryRights RegistryRights RegistryRights

레지스트리 키의 권한입니다.The rights for the registry key.

반환

요청된 하위 키이거나, 작업에 실패하면 null입니다.The subkey requested, or null if the operation failed.

예외

RegistryKey가 닫힌 경우. 닫힌 키는 액세스할 수 없습니다.The RegistryKey is closed (closed keys cannot be accessed).

사용자에게 지정된 모드에서 레지스트리 키에 액세스하는 데 필요한 권한이 없는 경우The user does not have the permissions required to access the registry key in the specified mode.

설명

다른 메서드 및 속성을 사용 하 여 조작할 수 전에 키를 열어야 합니다.You must open a key before it can be manipulated with other methods and properties. 키를 수정 하려면 열어야 오버 로드를 사용 하 여는 OpenSubKey 메서드는 쓰기 액세스를 지정할 수 있습니다.To modify a key, you must open it with an overload of the OpenSubKey method that allows you to specify write access.

OpenSubKey(String) OpenSubKey(String) OpenSubKey(String) OpenSubKey(String)

하위 키를 읽기 전용으로 검색합니다.Retrieves a subkey as read-only.

public:
 Microsoft::Win32::RegistryKey ^ OpenSubKey(System::String ^ name);
public Microsoft.Win32.RegistryKey OpenSubKey (string name);
member this.OpenSubKey : string -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String) As RegistryKey

매개 변수

name
String String String String

읽기 전용으로 열려는 하위 키의 이름 또는 경로입니다.The name or path of the subkey to open as read-only.

반환

요청된 하위 키이거나, 작업에 실패하면 null입니다.The subkey requested, or null if the operation failed.

예외

RegistryKey가 닫힌 경우. 닫힌 키는 액세스할 수 없습니다.The RegistryKey is closed (closed keys cannot be accessed).

사용자에게 레지스트리 키를 읽는 데 필요한 권한이 없는 경우The user does not have the permissions required to read the registry key.

예제

다음 코드 예제에서는 테스트 키를 만들고 사용 하는 OpenSubKey 연 메서드의 두 오버 로드를 보여 주는 방법입니다.The following code example creates a test key and uses the OpenSubKey method to open it, demonstrating both overloads of the method.

#using <Microsoft.VisualBasic.dll>

using namespace System;
using namespace Microsoft::Win32;
using namespace Microsoft::VisualBasic;

int main()
{
    // Delete and recreate the test key.
    Registry::CurrentUser->DeleteSubKey( L"RegistryOpenSubKeyExample", false );
    RegistryKey ^ rk = Registry::CurrentUser->CreateSubKey( L"RegistryOpenSubKeyExample" );
    rk->Close();

    // Obtain an instance of RegistryKey for the CurrentUser registry
    // root.
    RegistryKey ^ rkCurrentUser = Registry::CurrentUser;

    // Obtain the test key (read-only) and display it.
    RegistryKey ^ rkTest = rkCurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample" );
    Console::WriteLine( L"Test key: {0}", rkTest );
    rkTest->Close();
    rkCurrentUser->Close();

    // Obtain the test key in one step, using the CurrentUser registry
    // root.
    rkTest = Registry::CurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample" );
    Console::WriteLine( L"Test key: {0}", rkTest );
    rkTest->Close();

    // Open the test key in read/write mode.
    rkTest = Registry::CurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample", true );
    rkTest->SetValue( L"TestName", L"TestValue" );
    Console::WriteLine( L"Test value for TestName: {0}", rkTest->GetValue( L"TestName" ) );
    rkTest->Close();

    return 0;
} //Main
using System;
using Microsoft.Win32;
using Microsoft.VisualBasic;

public class Example
{
    public static void Main()
    {
        // Delete and recreate the test key.
        Registry.CurrentUser.DeleteSubKey("RegistryOpenSubKeyExample", false);
        RegistryKey rk = Registry.CurrentUser.CreateSubKey("RegistryOpenSubKeyExample");
        rk.Close();

        // Obtain an instance of RegistryKey for the CurrentUser registry 
        // root. 
        RegistryKey rkCurrentUser = Registry.CurrentUser;

        // Obtain the test key (read-only) and display it.
        RegistryKey rkTest = rkCurrentUser.OpenSubKey("RegistryOpenSubKeyExample");
        Console.WriteLine("Test key: {0}", rkTest);
        rkTest.Close();
        rkCurrentUser.Close();

        // Obtain the test key in one step, using the CurrentUser registry 
        // root.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample");
        Console.WriteLine("Test key: {0}", rkTest);
        rkTest.Close();

        // Open the test key in read/write mode.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample", true);
        rkTest.SetValue("TestName", "TestValue");
        Console.WriteLine("Test value for TestName: {0}", rkTest.GetValue("TestName"));
        rkTest.Close();
    } //Main
} //Example
Imports Microsoft.Win32

Public Class Example
    Public Shared Sub Main()
        ' Delete and recreate the test key.
        Registry.CurrentUser.DeleteSubKey("RegistryOpenSubKeyExample", False)
        Dim rk As RegistryKey = Registry.CurrentUser.CreateSubKey("RegistryOpenSubKeyExample")
        rk.Close

        ' Obtain an instance of RegistryKey for the CurrentUser registry 
        ' root. 
        Dim rkCurrentUser As RegistryKey = Registry.CurrentUser

        ' Obtain the test key (read-only) and display it.
        Dim rkTest As RegistryKey = rkCurrentUser.OpenSubKey("RegistryOpenSubKeyExample")
        Console.WriteLine("Test key: {0}", rkTest)
        rkTest.Close
        rkCurrentUser.Close

        ' Obtain the test key in one step, using the CurrentUser registry 
        ' root.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample")
        Console.WriteLine("Test key: {0}", rkTest)
        rkTest.Close

        ' Obtain the test key in read/write mode.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample", True)
        rkTest.SetValue("TestName", "TestValue")
        Console.WriteLine("Test value for TestName: {0}", rkTest.GetValue("TestName"))
        rkTest.Close
    End Sub
End Class

설명

다른 메서드 및 속성을 사용 하 여 조작할 수 전에 키를 열어야 합니다.You must open a key before it can be manipulated with other methods and properties. 키를 수정 하려면 열어야 오버 로드를 사용 하 여 합니다 OpenSubKey 와 같은 쓰기 액세스를 지정할 수 있는 메서드를 OpenSubKey(String, RegistryKeyPermissionCheck) 오버 로드 또는 OpenSubKey(String, Boolean) 오버 로드 합니다.To modify a key, you must open it with an overload of the OpenSubKey method that allows you to specify write access, such as the OpenSubKey(String, RegistryKeyPermissionCheck) overload or the OpenSubKey(String, Boolean) overload.

지정 된 하위 키를 찾을 수 없는 경우, 다음 null 반환 됩니다.If the specified subkey cannot be found, then null is returned.

사용 하기 위해 합니다 OpenSubKey 메서드를 인스턴스에 있어야 합니다 RegistryKey합니다.In order to use the OpenSubKey method, you must have an instance of RegistryKey. 인스턴스를 가져오려면 RegistryKey의 정적 멤버 중 하나를 사용 합니다 Registry 클래스입니다.To get an instance of RegistryKey, use the one of the static members of the Registry class.

보안

RegistryPermission
지정 된 레지스트리 키를 읽을 수 있습니다.for the ability to read the specified registry key. 연결 된 열거형: ReadAssociated enumeration: Read

SecurityPermission
경우에 지정 된 레지스트리 키에 액세스할 수 있도록 원격 키 것입니다.for the ability to access the specified registry key if it is a remote key. 연결 된 열거형: UnmanagedCodeAssociated enumeration: UnmanagedCode

추가 정보

OpenSubKey(String, RegistryKeyPermissionCheck) OpenSubKey(String, RegistryKeyPermissionCheck) OpenSubKey(String, RegistryKeyPermissionCheck) OpenSubKey(String, RegistryKeyPermissionCheck)

읽기 또는 읽기/쓰기 권한으로 지정된 하위 키를 검색합니다.Retrieves the specified subkey for read or read/write access.

public:
 Microsoft::Win32::RegistryKey ^ OpenSubKey(System::String ^ name, Microsoft::Win32::RegistryKeyPermissionCheck permissionCheck);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey OpenSubKey (string name, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck);
member this.OpenSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String, permissionCheck As RegistryKeyPermissionCheck) As RegistryKey

매개 변수

name
String String String String

만들거나 열 하위 키의 이름 또는 경로입니다.The name or path of the subkey to create or open.

permissionCheck
RegistryKeyPermissionCheck RegistryKeyPermissionCheck RegistryKeyPermissionCheck RegistryKeyPermissionCheck

키가 읽기 또는 읽기/쓰기 권한으로 열려 있는지를 지정하는 열거형 값 중 하나입니다.One of the enumeration values that specifies whether the key is opened for read or read/write access.

반환

요청된 하위 키이거나, 작업에 실패하면 null입니다.The subkey requested, or null if the operation failed.

예외

permissionCheck에 잘못된 값이 포함된 경우permissionCheck contains an invalid value.

RegistryKey가 닫힌 경우. 닫힌 키는 액세스할 수 없습니다.The RegistryKey is closed (closed keys cannot be accessed).

사용자에게 레지스트리 키를 읽는 데 필요한 권한이 없는 경우The user does not have the permissions required to read the registry key.

예제

다음 코드 예제에서는 100 키/값 쌍이 들어 있는 하위 키를 만들고 닫습니다.The following code example creates a subkey containing 100 key/value pairs and closes it. 이 예제에서는 사용 하 여 하위 키를 열고 Default, 하위 키를 닫습니다 모든 값을 읽는 데 걸린 시간을 기록 합니다.The example opens the subkey with Default, records the time it takes to read all the values, and closes the subkey. 이 예제에서는 사용 하 여 하위 키를 열고 ReadSubTree 고 값을 모두 읽는 데 걸리는 시간을 기록 합니다.The example opens the subkey with ReadSubTree and records the time it takes to read all the values. 마지막으로 계산 하 고 향상 비율을 표시 합니다.Finally, the example computes and displays the percentage improvement.

using System;
using Microsoft.Win32;
using System.Diagnostics;

public class Example
{
    public static void Main()
    {
        const int LIMIT = 100;
        RegistryKey cu = Registry.CurrentUser;
        const string testKey = "RegistryKeyPermissionCheckExample";

        Console.WriteLine("Generating {0} key/value pairs.", LIMIT);
        RegistryKey rk = cu.CreateSubKey(testKey);
        for (int i = 0; i < LIMIT; i++)
        {
            rk.SetValue("Key" + i, i);
        }

        rk.Close();

        Stopwatch s = new Stopwatch();

        // On the default setting, security is checked every time
        // a key/value pair is read.
        rk = cu.OpenSubKey(testKey, RegistryKeyPermissionCheck.Default);
        
        s.Start();
        for (int i = 0; i < LIMIT; i++)
        {
            rk.GetValue("Key" + i, i);
        }
        s.Stop();
        rk.Close();
        long delta1 = s.ElapsedTicks;

        s.Reset();

        // When the key is opened with ReadSubTree, security is 
        // not checked when the values are read.
        rk = cu.OpenSubKey(testKey, RegistryKeyPermissionCheck.ReadSubTree);
        
        s.Start();
        for (int i = 0; i < LIMIT; i++)
        {
            rk.GetValue("Key" + i, i);
        }
        s.Stop();
        rk.Close();
        long delta2 = s.ElapsedTicks;

        double faster = (double) (delta1 - delta2) / (double) delta1;
        Console.WriteLine("ReadSubTree is {0}% faster for {1} values.",
            (faster * 100).ToString("0.0"), LIMIT);

        cu.DeleteSubKey(testKey);
    }
}

/* This code example produces output similar to the following:

Generating 100 key/value pairs.
ReadSubTree is 23.4% faster for 100 values.
 */
Imports Microsoft.Win32
Imports System.Diagnostics

Public Class Example
    
    Public Shared Sub Main() 

        Const LIMIT As Integer = 100
        Dim cu As RegistryKey = Registry.CurrentUser
        Const testKey As String = "RegistryKeyPermissionCheckExample"
        
        Console.WriteLine("Generating {0} key/value pairs.", LIMIT)
        Dim rk As RegistryKey = cu.CreateSubKey(testKey)

        For i As Integer = 0 To LIMIT
            rk.SetValue("Key" & i, i)
        Next i
        
        rk.Close()
        
        Dim s As New Stopwatch()
        
        ' On the default setting, security is checked every time
        ' a key/value pair is read.
        rk = cu.OpenSubKey(testKey, _
            RegistryKeyPermissionCheck.Default)
        
        s.Start()
        For i As Integer = 0 To LIMIT
            rk.GetValue("Key" & i, i)
        Next i
        s.Stop()
        rk.Close()
        Dim delta1 As Long = s.ElapsedTicks
        
        s.Reset()
        
        ' When the key is opened with ReadSubTree, security is 
        ' not checked when the values are read.
        rk = cu.OpenSubKey(testKey, _
            RegistryKeyPermissionCheck.ReadSubTree)
        
        s.Start()
        For i As Integer = 0 To LIMIT
            rk.GetValue("Key" & i, i)
        Next i
        s.Stop()
        rk.Close()
        Dim delta2 As Long = s.ElapsedTicks
        
        Dim faster As Double = _
            CDbl(delta1 - delta2) * 100.0 / CDbl(delta1)
        Console.WriteLine("ReadSubTree is {0}% faster for {1} values.", _
            faster.ToString("0.0"), LIMIT)
        
        cu.DeleteSubKey(testKey)
    
    End Sub 
End Class 

' This code example produces output similar to the following:
'
'Generating 100 key/value pairs.
'ReadSubTree is 23.4% faster for 100 values.
' 

설명

이 메서드가 반환 하는 예외를 throw 하는 대신 null 요청 된 키가 없는 경우.Rather than throwing an exception, this method returns null if the requested key does not exist.

경우 permissionCheck 됩니다 RegistryKeyPermissionCheck.ReadWriteSubTree, 경우 키 읽기 및 쓰기용으로 열려 permissionCheck 됩니다 RegistryKeyPermissionCheck.ReadSubTree 또는 RegistryKeyPermissionCheck.Default, 부모 키로 열리지 않았으면 읽기에 대 한 키가 열리는 RegistryKeyPermissionCheck.ReadWriteSubTree.If permissionCheck is RegistryKeyPermissionCheck.ReadWriteSubTree, the key is opened for reading and writing; if permissionCheck is RegistryKeyPermissionCheck.ReadSubTree or RegistryKeyPermissionCheck.Default, the key is opened for reading unless the parent key was opened with RegistryKeyPermissionCheck.ReadWriteSubTree.

사용 하기 위해 합니다 OpenSubKey 메서드를 인스턴스에 있어야 합니다는 RegistryKey 클래스입니다.In order to use the OpenSubKey method, you must have an instance of the RegistryKey class. 인스턴스를 가져오려면 RegistryKey의 정적 멤버 중 하나를 사용 합니다 Registry 클래스입니다.To get an instance of RegistryKey, use one of the static members of the Registry class.

보안

RegistryPermission
지정 된 레지스트리 키를 읽을 수 있습니다.for the ability to read the specified registry key. 연결 된 열거형: ReadAssociated enumeration: Read

SecurityPermission
경우에 지정 된 레지스트리 키에 액세스할 수 있도록 원격 키 것입니다.for the ability to access the specified registry key if it is a remote key. 연결 된 열거형: UnmanagedCodeAssociated enumeration: UnmanagedCode

추가 정보

적용 대상