RegistryKey Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje uzel na úrovni klíče v registru Windows. Tato třída je zapouzdření registru.
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
- Dědičnost
- Dědičnost
-
RegistryKey
- Atributy
- Implementuje
Příklady
Následující příklad kódu ukazuje, jak vytvořit podklíč v HKEY_CURRENT_USER, manipulovat s jeho obsahem a pak odstranit podklíč.
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
Poznámky
Pokud chcete získat instanci RegistryKey, použijte jeden ze statických Registry členů třídy.
Registr funguje jako centrální úložiště informací pro operační systém a aplikace v počítači. Registr je uspořádaný v hierarchickém formátu na základě logického pořadí prvků, které jsou v něm uložené (viz položky Registry základní úrovně v této hierarchii). Při ukládání informací v registru vyberte příslušné umístění na základě typu uložených informací. Nezapomeňte se vyhnout zničení informací vytvořených jinými aplikacemi, protože to může způsobit, že tyto aplikace vykazují neočekávané chování a mohou mít také nepříznivý vliv na vaši vlastní aplikaci.
Important
Tento typ implementuje rozhraní IDisposable. Jakmile skončíte s používáním typu, měli byste ho odstranit buď přímo, nebo nepřímo. Chcete-li typ odstranit přímo, zavolejte jeho Dispose metodu v bloku try/catch. Pokud ho chcete zlikvidovat nepřímo, použijte konstruktor jazyka, jako je using (v jazyce C#) nebo Using (v jazyce Visual Basic). Další informace naleznete v části Použití objektu, který implementuje IDisposable v IDisposable tématu rozhraní.
Klíče registru jsou základní jednotkou organizace v registru a lze je porovnat se složkami v Průzkumníku souborů. Konkrétní klíč může mít podklíče, stejně jako složka může obsahovat podsložky. Každý klíč lze odstranit, pokud má uživatel příslušná oprávnění k tomu a klíč není základním klíčem ani na úrovni přímo pod základními klíči. Ke každému klíči může být přidruženo také více hodnot (hodnota se dá porovnat se souborem), které slouží k ukládání informací – například informace o aplikaci nainstalované v počítači. Každá hodnota obsahuje jednu konkrétní část informací, kterou lze v případě potřeby načíst nebo aktualizovat. Můžete například vytvořit RegistryKey pro svoji společnost pod klíčem HKEY_LOCAL_MACHINE\Softwarea pak podklíč pro každou aplikaci, kterou vaše společnost vytvoří. Každý podklíč obsahuje informace specifické pro danou aplikaci, například nastavení barev, umístění a velikost obrazovky nebo rozpoznané přípony souborů.
Všimněte si, že informace uložené v registru jsou k dispozici pro jiné aplikace a uživatele, a proto by se neměly používat k ukládání dat zabezpečení nebo důležitých informací aplikace.
Caution
Nezpřístupňujte RegistryKey objekty takovým způsobem, že by škodlivý program mohl vytvořit tisíce bezvýznamných podklíčů nebo párů klíč/hodnota. Nepovolujte například volajícím zadat libovolné klíče nebo hodnoty.
Počínaje .NET Framework 4 už délka klíče registru není omezena na 255 znaků.
Vlastnosti
| Name | Description |
|---|---|
| Handle |
SafeRegistryHandle Získá objekt, který představuje klíč registru, který aktuální RegistryKey objekt zapouzdřuje. |
| Name |
Načte název klíče. |
| SubKeyCount |
Načte počet podklíčů aktuálního klíče. |
| ValueCount |
Načte počet hodnot v klíči. |
| View |
Získá zobrazení, které bylo použito k vytvoření klíče registru. |
Metody
| Name | Description |
|---|---|
| Close() |
Zavře klíč a vyprázdní ho na disk, pokud byl jeho obsah změněn. |
| CreateObjRef(Type) |
Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího ke komunikaci se vzdáleným objektem. (Zděděno od MarshalByRefObject) |
| CreateSubKey(String, Boolean, RegistryOptions) |
Vytvoří nový podklíč nebo otevře existující podklíč se zadaným přístupem. K dispozici od .NET Framework 4.6. |
| CreateSubKey(String, Boolean) |
Vytvoří nový podklíč nebo otevře existující podklíč se zadaným přístupem. K dispozici od .NET Framework 4.6. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity) |
Vytvoří podklíč nebo otevře podklíč pro přístup k zápisu pomocí zadané možnosti kontroly oprávnění, možnosti registru a zabezpečení registru. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions) |
Vytvoří podklíč nebo otevře podklíč pro přístup k zápisu pomocí zadané kontroly oprávnění a možností registru. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity) |
Vytvoří nový podklíč nebo otevře existující podklíč pro přístup k zápisu pomocí zadané možnosti kontroly oprávnění a zabezpečení registru. |
| CreateSubKey(String, RegistryKeyPermissionCheck) |
Vytvoří nový podklíč nebo otevře existující podklíč pro přístup k zápisu pomocí zadané možnosti kontroly oprávnění. |
| CreateSubKey(String) |
Vytvoří nový podklíč nebo otevře existující podklíč pro přístup k zápisu. |
| DeleteSubKey(String, Boolean) |
Odstraní zadaný podklíč a určuje, zda je vyvolána výjimka, pokud podklíč nebyl nalezen. |
| DeleteSubKey(String) |
Odstraní zadaný podklíč. |
| DeleteSubKeyTree(String, Boolean) |
Odstraní zadaný podklíč a všechny podřízené podklíče rekurzivně a určuje, zda je vyvolána výjimka, pokud podklíč nebyl nalezen. |
| DeleteSubKeyTree(String) |
Odstraní podklíč a všechny podřízené podklíče rekurzivně. |
| DeleteValue(String, Boolean) |
Odstraní zadanou hodnotu z tohoto klíče a určuje, zda je vyvolána výjimka, pokud hodnota nebyla nalezena. |
| DeleteValue(String) |
Odstraní zadanou hodnotu z tohoto klíče. |
| Dispose() |
Uvolní všechny prostředky používané aktuální instancí RegistryKey třídy. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| Finalize() |
Zavře klíč a vyprázdní ho na disk, pokud byl obsah změněn. |
| Flush() |
Zapíše všechny atributy zadaného otevřeného klíče registru do registru. |
| FromHandle(SafeRegistryHandle, RegistryView) |
Vytvoří klíč registru ze zadaného popisovače a nastavení zobrazení registru. |
| FromHandle(SafeRegistryHandle) |
Vytvoří klíč registru ze zadaného popisovače. |
| GetAccessControl() |
Vrátí zabezpečení řízení přístupu pro aktuální klíč registru. |
| GetAccessControl(AccessControlSections) |
Vrátí zadané části zabezpečení řízení přístupu pro aktuální klíč registru. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetLifetimeService() |
Zastaralé.
Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| GetSubKeyNames() |
Načte pole řetězců, které obsahují všechny názvy podklíčů. |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| GetValue(String, Object, RegistryValueOptions) |
Načte hodnotu přidruženou k zadanému názvu a možnostem načtení. Pokud se název nenajde, vrátí výchozí hodnotu, kterou zadáte. |
| GetValue(String, Object) |
Načte hodnotu přidruženou k zadanému názvu. Pokud se název nenajde, vrátí výchozí hodnotu, kterou zadáte. |
| GetValue(String) |
Načte hodnotu přidruženou k zadanému názvu. Vrátí |
| GetValueKind(String) |
Načte datový typ registru hodnoty přidružené k zadanému názvu. |
| GetValueNames() |
Načte pole řetězců, které obsahují všechny názvy hodnot přidružené k tomuto klíči. |
| InitializeLifetimeService() |
Zastaralé.
Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| MemberwiseClone(Boolean) |
Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu. (Zděděno od MarshalByRefObject) |
| OpenBaseKey(RegistryHive, RegistryView) |
Otevře nový RegistryKey klíč, který představuje požadovaný klíč na místním počítači se zadaným zobrazením. |
| OpenRemoteBaseKey(RegistryHive, String, RegistryView) |
Otevře nový klíč registru, který představuje požadovaný klíč na vzdáleném počítači se zadaným zobrazením. |
| OpenRemoteBaseKey(RegistryHive, String) |
Otevře nový RegistryKey klíč, který představuje požadovaný klíč na vzdáleném počítači. |
| OpenSubKey(String, Boolean) |
Načte zadaný podklíč a určuje, jestli se má pro klíč použít přístup k zápisu. |
| OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) |
Načte zadaný podklíč pro přístup pro čtení nebo čtení/zápis a požaduje zadaná přístupová práva. |
| OpenSubKey(String, RegistryKeyPermissionCheck) |
Načte zadaný podklíč pro přístup pro čtení nebo čtení a zápis. |
| OpenSubKey(String, RegistryRights) |
Načte podklíč se zadaným názvem a přístupovými právy. K dispozici od .NET Framework 4.6. |
| OpenSubKey(String) |
Načte podklíč jen pro čtení. |
| SetAccessControl(RegistrySecurity) |
Použije Windows zabezpečení řízení přístupu na existující klíč registru. |
| SetValue(String, Object, RegistryValueKind) |
Nastaví hodnotu páru název/hodnota v klíči registru pomocí zadaného datového typu registru. |
| SetValue(String, Object) |
Nastaví zadaný pár název/hodnota. |
| ToString() |
Načte řetězcovou reprezentaci tohoto klíče. |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu. Close() Provede aktuální klíč. |
Metody rozšíření
| Name | Description |
|---|---|
| GetAccessControl(RegistryKey, AccessControlSections) |
Vrátí informace o zabezpečení klíče registru. |
| GetAccessControl(RegistryKey) |
Vrátí informace o zabezpečení klíče registru. |
| SetAccessControl(RegistryKey, RegistrySecurity) |
Změní atributy zabezpečení existujícího klíče registru. |