RegistryKey.OpenSubKey Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
- CreateSubKey(String)
- DeleteSubKey(String)
- DeleteSubKeyTree(String)
- GetSubKeyNames()
- OpenRemoteBaseKey(RegistryHive, String)
- SubKeyCount
- Registry
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
- CreateSubKey(String)
- DeleteSubKey(String)
- DeleteSubKeyTree(String)
- GetSubKeyNames()
- OpenRemoteBaseKey(RegistryHive, String)
- SubKeyCount
- Registry
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
- CreateSubKey(String)
- DeleteSubKey(String)
- DeleteSubKeyTree(String)
- GetSubKeyNames()
- OpenRemoteBaseKey(RegistryHive, String)
- SubKeyCount
- Registry
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
- CreateSubKey(String)
- DeleteSubKey(String)
- DeleteSubKeyTree(String)
- GetSubKeyNames()
- OpenRemoteBaseKey(RegistryHive, String)
- SubKeyCount
- Registry