RegistryKey.OpenSubKey Metod

Definition

Hämtar den angivna undernyckeln.

Överlagringar

Name Description
OpenSubKey(String, Boolean)

Hämtar en angiven undernyckel och anger om skrivåtkomst ska tillämpas på nyckeln.

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

Hämtar den angivna undernyckeln för läs- eller läs-/skrivåtkomst och begär de angivna åtkomsträttigheterna.

OpenSubKey(String, RegistryRights)

Hämtar en undernyckel med angivet namn och åtkomsträttigheter. Tillgänglig från och med .NET Framework 4.6.

OpenSubKey(String)

Hämtar en undernyckel som skrivskyddad.

OpenSubKey(String, RegistryKeyPermissionCheck)

Hämtar den angivna undernyckeln för läs- eller läs-/skrivåtkomst.

OpenSubKey(String, Boolean)

Hämtar en angiven undernyckel och anger om skrivåtkomst ska tillämpas på nyckeln.

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

Parametrar

name
String

Namn eller sökväg för undernyckeln som ska öppnas.

writable
Boolean

Ange till true om du behöver skrivåtkomst till nyckeln.

Returer

Den begärda undernyckeln eller null om åtgärden misslyckades.

Undantag

name är null.

RegistryKey Är stängd (stängda nycklar kan inte nås).

Användaren har inte de behörigheter som krävs för att komma åt registernyckeln i det angivna läget.

Exempel

I följande kodexempel skapas en testnyckel och metoden används OpenSubKey för att öppna den, vilket visar båda överlagringarna av metoden.

#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

Kommentarer

Om den begärda nyckeln inte finns returnerar null den här metoden i stället för att utlösa ett undantag.

Om writable är trueöppnas nyckeln för läsning och skrivning, annars öppnas nyckeln som skrivskyddad.

För att kunna använda OpenSubKey metoden måste du ha en instans av RegistryKey metoden. Om du vill hämta en instans av RegistryKeyanvänder du en av klassens statiska medlemmar Registry .

Se även

Gäller för

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

Hämtar den angivna undernyckeln för läs- eller läs-/skrivåtkomst och begär de angivna åtkomsträttigheterna.

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);
[<System.Runtime.InteropServices.ComVisible(false)>]
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

Parametrar

name
String

Namn eller sökväg för undernyckeln som ska skapas eller öppnas.

permissionCheck
RegistryKeyPermissionCheck

Ett av uppräkningsvärdena som anger om nyckeln öppnas för läs- eller läs-/skrivåtkomst.

rights
RegistryRights

En bitvis kombination av uppräkningsvärden som anger önskad säkerhetsåtkomst.

Returer

Den begärda undernyckeln eller null om åtgärden misslyckades.

Attribut

Undantag

name är null

permissionCheck innehåller ett ogiltigt värde.

RegistryKey Är stängd (stängda nycklar kan inte nås).

rights innehåller ogiltiga registerrättigheter.

-eller-

Användaren har inte de begärda behörigheterna.

Kommentarer

I stället för att utlösa ett undantag returnerar null den här metoden om den begärda nyckeln inte finns.

Om permissionCheck är RegistryKeyPermissionCheck.ReadWriteSubTreeöppnas nyckeln för läsning och skrivning. Om permissionCheck är RegistryKeyPermissionCheck.ReadSubTree eller RegistryKeyPermissionCheck.Defaultöppnas nyckeln för läsning om inte den överordnade nyckeln öppnades med RegistryKeyPermissionCheck.ReadWriteSubTree.

Den åtkomst som anges för permissionCheck har företräde framför den åtkomst som angetts för rights. Om du till exempel anger RegistryKeyPermissionCheck.ReadSubTree för permissionCheck och RegistryRights.WriteKey för rightsgenererar ett försök att skriva till undernyckeln ett undantag.

För att kunna använda OpenSubKey metoden måste du ha en instans av RegistryKey klassen. Om du vill hämta en instans av RegistryKeyanvänder du en av klassens statiska medlemmar Registry .

Se även

Gäller för

OpenSubKey(String, RegistryRights)

Hämtar en undernyckel med angivet namn och åtkomsträttigheter. Tillgänglig från och med .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);
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.OpenSubKey : string * System.Security.AccessControl.RegistryRights -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String, rights As RegistryRights) As RegistryKey

Parametrar

name
String

Namn eller sökväg för undernyckeln som ska skapas eller öppnas.

rights
RegistryRights

Behörigheterna för registernyckeln.

Returer

Den begärda undernyckeln eller null om åtgärden misslyckades.

Attribut

Undantag

name är null.

RegistryKey Är stängd (stängda nycklar kan inte nås).

Användaren har inte de behörigheter som krävs för att komma åt registernyckeln i det angivna läget.

Kommentarer

Du måste öppna en nyckel innan den kan manipuleras med andra metoder och egenskaper. Om du vill ändra en nyckel måste du öppna den med en överlagring av metoden OpenSubKey som gör att du kan ange skrivåtkomst.

Gäller för

OpenSubKey(String)

Hämtar en undernyckel som skrivskyddad.

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

Parametrar

name
String

Namnet eller sökvägen för undernyckeln som ska öppnas som skrivskyddad.

Returer

Den begärda undernyckeln eller null om åtgärden misslyckades.

Undantag

name är null

RegistryKey Är stängd (stängda nycklar kan inte nås).

Användaren har inte de behörigheter som krävs för att läsa registernyckeln.

Exempel

I följande kodexempel skapas en testnyckel och metoden används OpenSubKey för att öppna den, vilket visar båda överlagringarna av metoden.

#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

Kommentarer

Du måste öppna en nyckel innan den kan manipuleras med andra metoder och egenskaper. Om du vill ändra en nyckel måste du öppna den med en överlagring av metoden OpenSubKey som gör att du kan ange skrivåtkomst, till exempel OpenSubKey(String, RegistryKeyPermissionCheck) överlagring eller OpenSubKey(String, Boolean) överlagring.

Om det inte går att hitta null den angivna undernyckeln returneras den.

För att kunna använda OpenSubKey metoden måste du ha en instans av RegistryKey. Om du vill hämta en instans av RegistryKeyanvänder du en av klassens statiska medlemmar Registry .

Se även

Gäller för

OpenSubKey(String, RegistryKeyPermissionCheck)

Hämtar den angivna undernyckeln för läs- eller läs-/skrivåtkomst.

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);
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.OpenSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String, permissionCheck As RegistryKeyPermissionCheck) As RegistryKey

Parametrar

name
String

Namn eller sökväg för undernyckeln som ska skapas eller öppnas.

permissionCheck
RegistryKeyPermissionCheck

Ett av uppräkningsvärdena som anger om nyckeln öppnas för läs- eller läs-/skrivåtkomst.

Returer

Den begärda undernyckeln eller null om åtgärden misslyckades.

Attribut

Undantag

name är null

permissionCheck innehåller ett ogiltigt värde.

RegistryKey Är stängd (stängda nycklar kan inte nås).

Användaren har inte de behörigheter som krävs för att läsa registernyckeln.

Exempel

I följande kodexempel skapas en undernyckel som innehåller 100 nyckel/värde-par och stänger den. I exemplet öppnas undernyckeln med Default, registrerar den tid det tar att läsa alla värden och stänger undernyckeln. Exemplet öppnar undernyckeln med ReadSubTree och registrerar den tid det tar att läsa alla värden. Slutligen beräknar exemplet och visar den procentuella förbättringen.

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.
'

Kommentarer

I stället för att utlösa ett undantag returnerar null den här metoden om den begärda nyckeln inte finns.

Om permissionCheck är RegistryKeyPermissionCheck.ReadWriteSubTreeöppnas nyckeln för läsning och skrivning. Om permissionCheck är RegistryKeyPermissionCheck.ReadSubTree eller RegistryKeyPermissionCheck.Defaultöppnas nyckeln för läsning om inte den överordnade nyckeln öppnades med RegistryKeyPermissionCheck.ReadWriteSubTree.

För att kunna använda OpenSubKey metoden måste du ha en instans av RegistryKey klassen. Om du vill hämta en instans av RegistryKeyanvänder du en av klassens statiska medlemmar Registry .

Se även

Gäller för