RegistryKey.OpenSubKey Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Haalt de opgegeven subsleutel op.
Overloads
| Name | Description |
|---|---|
| OpenSubKey(String, Boolean) |
Hiermee haalt u een opgegeven subsleutel op en geeft u op of schrijftoegang moet worden toegepast op de sleutel. |
| OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) |
Haalt de opgegeven subsleutel op voor lees- of lees-/schrijftoegang, waarbij de opgegeven toegangsrechten worden aangevraagd. |
| OpenSubKey(String, RegistryRights) |
Hiermee haalt u een subsleutel op met de opgegeven naam en toegangsrechten. Beschikbaar vanaf .NET Framework 4.6. |
| OpenSubKey(String) |
Hiermee wordt een subsleutel opgehaald als alleen-lezen. |
| OpenSubKey(String, RegistryKeyPermissionCheck) |
Haalt de opgegeven subsleutel op voor lees- of lees-/schrijftoegang. |
OpenSubKey(String, Boolean)
Hiermee haalt u een opgegeven subsleutel op en geeft u op of schrijftoegang moet worden toegepast op de sleutel.
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
Parameters
- name
- String
De naam of het pad van de subsleutel die u wilt openen.
- writable
- Boolean
Ingesteld op true als u schrijftoegang tot de sleutel nodig hebt.
Retouren
De aangevraagde subsleutel of null als de bewerking is mislukt.
Uitzonderingen
name is null.
De RegistryKey sleutel is gesloten (gesloten sleutels kunnen niet worden geopend).
De gebruiker beschikt niet over de vereiste machtigingen voor toegang tot de registersleutel in de opgegeven modus.
Voorbeelden
In het volgende codevoorbeeld wordt een testsleutel gemaakt en wordt de OpenSubKey methode gebruikt om deze te openen, waarbij beide overbelastingen van de methode worden gedemonstreerd.
#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
Opmerkingen
Als de aangevraagde sleutel niet bestaat, retourneert null deze methode in plaats van een uitzondering te genereren.
Als writable dat het is true, wordt de sleutel geopend voor lezen en schrijven, anders wordt de sleutel geopend als alleen-lezen.
Als u de OpenSubKey methode wilt gebruiken, moet u een exemplaar van de RegistryKey methode hebben. Als u een exemplaar van RegistryKeywilt ophalen, gebruikt u een van de statische leden van de Registry klasse.
Zie ook
- CreateSubKey(String)
- DeleteSubKey(String)
- DeleteSubKeyTree(String)
- GetSubKeyNames()
- OpenRemoteBaseKey(RegistryHive, String)
- SubKeyCount
- Registry
Van toepassing op
OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)
Haalt de opgegeven subsleutel op voor lees- of lees-/schrijftoegang, waarbij de opgegeven toegangsrechten worden aangevraagd.
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
Parameters
- name
- String
De naam of het pad van de subsleutel die u wilt maken of openen.
- permissionCheck
- RegistryKeyPermissionCheck
Een van de opsommingswaarden die aangeven of de sleutel wordt geopend voor lees- of lees-/schrijftoegang.
- rights
- RegistryRights
Een bitsgewijze combinatie van opsommingswaarden waarmee de gewenste beveiligingstoegang wordt opgegeven.
Retouren
De aangevraagde subsleutel of null als de bewerking is mislukt.
- Kenmerken
Uitzonderingen
name Is null
permissionCheck bevat een ongeldige waarde.
De RegistryKey sleutel is gesloten (gesloten sleutels kunnen niet worden geopend).
rights bevat ongeldige registerrechtenwaarden.
– of –
De gebruiker beschikt niet over de aangevraagde machtigingen.
Opmerkingen
In plaats van een uitzondering te genereren, retourneert null deze methode als de aangevraagde sleutel niet bestaat.
Als permissionCheck dat het is RegistryKeyPermissionCheck.ReadWriteSubTree, wordt de sleutel geopend voor lezen en schrijven; indien permissionCheck of RegistryKeyPermissionCheck.ReadSubTreeRegistryKeyPermissionCheck.Default, wordt de sleutel geopend voor lezen, tenzij de bovenliggende sleutel is geopend met RegistryKeyPermissionCheck.ReadWriteSubTree.
De opgegeven permissionCheck toegang heeft voorrang op de opgegeven rightstoegang. Als u bijvoorbeeld opgeeft RegistryKeyPermissionCheck.ReadSubTree voor permissionCheck en RegistryRights.WriteKey voor rights, genereert een poging om naar de subsleutel te schrijven een uitzondering.
Als u de OpenSubKey methode wilt gebruiken, moet u een exemplaar van de RegistryKey klasse hebben. Als u een exemplaar van RegistryKeywilt ophalen, gebruikt u een van de statische leden van de Registry klasse.
Zie ook
- CreateSubKey(String)
- DeleteSubKey(String)
- DeleteSubKeyTree(String)
- GetSubKeyNames()
- OpenRemoteBaseKey(RegistryHive, String)
- SubKeyCount
- Registry
Van toepassing op
OpenSubKey(String, RegistryRights)
Hiermee haalt u een subsleutel op met de opgegeven naam en toegangsrechten. Beschikbaar vanaf .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
Parameters
- name
- String
De naam of het pad van de subsleutel die u wilt maken of openen.
- rights
- RegistryRights
De rechten voor de registersleutel.
Retouren
De aangevraagde subsleutel of null als de bewerking is mislukt.
- Kenmerken
Uitzonderingen
name is null.
De RegistryKey sleutel is gesloten (gesloten sleutels kunnen niet worden geopend).
De gebruiker beschikt niet over de vereiste machtigingen voor toegang tot de registersleutel in de opgegeven modus.
Opmerkingen
U moet een sleutel openen voordat deze kan worden bewerkt met andere methoden en eigenschappen. Als u een sleutel wilt wijzigen, moet u deze openen met een overbelasting van de OpenSubKey methode waarmee u schrijftoegang kunt opgeven.
Van toepassing op
OpenSubKey(String)
Hiermee wordt een subsleutel opgehaald als alleen-lezen.
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
Parameters
- name
- String
De naam of het pad van de subsleutel die moet worden geopend als alleen-lezen.
Retouren
De aangevraagde subsleutel of null als de bewerking is mislukt.
Uitzonderingen
name Is null
De RegistryKey sleutel is gesloten (gesloten sleutels kunnen niet worden geopend).
De gebruiker beschikt niet over de vereiste machtigingen om de registersleutel te lezen.
Voorbeelden
In het volgende codevoorbeeld wordt een testsleutel gemaakt en wordt de OpenSubKey methode gebruikt om deze te openen, waarbij beide overbelastingen van de methode worden gedemonstreerd.
#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
Opmerkingen
U moet een sleutel openen voordat deze kan worden bewerkt met andere methoden en eigenschappen. Als u een sleutel wilt wijzigen, moet u deze openen met een overbelasting van de OpenSubKey methode waarmee u schrijftoegang kunt opgeven, zoals de OpenSubKey(String, RegistryKeyPermissionCheck) overbelasting of overbelasting OpenSubKey(String, Boolean) .
Als de opgegeven subsleutel niet kan worden gevonden, null wordt deze geretourneerd.
Als u de OpenSubKey methode wilt gebruiken, moet u een instantie van RegistryKey. Gebruik een van de statische leden van de Registry klasse om een exemplaar op RegistryKeyte halen.
Zie ook
- CreateSubKey(String)
- DeleteSubKey(String)
- DeleteSubKeyTree(String)
- GetSubKeyNames()
- OpenRemoteBaseKey(RegistryHive, String)
- SubKeyCount
- Registry
Van toepassing op
OpenSubKey(String, RegistryKeyPermissionCheck)
Haalt de opgegeven subsleutel op voor lees- of lees-/schrijftoegang.
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
Parameters
- name
- String
De naam of het pad van de subsleutel die u wilt maken of openen.
- permissionCheck
- RegistryKeyPermissionCheck
Een van de opsommingswaarden die aangeven of de sleutel wordt geopend voor lees- of lees-/schrijftoegang.
Retouren
De aangevraagde subsleutel of null als de bewerking is mislukt.
- Kenmerken
Uitzonderingen
name Is null
permissionCheck bevat een ongeldige waarde.
De RegistryKey sleutel is gesloten (gesloten sleutels kunnen niet worden geopend).
De gebruiker beschikt niet over de vereiste machtigingen om de registersleutel te lezen.
Voorbeelden
In het volgende codevoorbeeld wordt een subsleutel gemaakt met 100 sleutel-/waardeparen en wordt deze gesloten. Het voorbeeld opent de subsleutel met Default, registreert de tijd die nodig is om alle waarden te lezen en sluit de subsleutel. Het voorbeeld opent de subsleutel met ReadSubTree en registreert de tijd die nodig is om alle waarden te lezen. Ten slotte wordt het voorbeeld berekend en wordt de percentageverbetering weergegeven.
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.
'
Opmerkingen
In plaats van een uitzondering te genereren, retourneert null deze methode als de aangevraagde sleutel niet bestaat.
Als permissionCheck dat het is RegistryKeyPermissionCheck.ReadWriteSubTree, wordt de sleutel geopend voor lezen en schrijven; indien permissionCheck of RegistryKeyPermissionCheck.ReadSubTreeRegistryKeyPermissionCheck.Default, wordt de sleutel geopend voor lezen, tenzij de bovenliggende sleutel is geopend met RegistryKeyPermissionCheck.ReadWriteSubTree.
Als u de OpenSubKey methode wilt gebruiken, moet u een exemplaar van de RegistryKey klasse hebben. Als u een exemplaar van RegistryKeywilt ophalen, gebruikt u een van de statische leden van de Registry klasse.
Zie ook
- CreateSubKey(String)
- DeleteSubKey(String)
- DeleteSubKeyTree(String)
- GetSubKeyNames()
- OpenRemoteBaseKey(RegistryHive, String)
- SubKeyCount
- Registry