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íčů v registru systému 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íč pod HKEY_CURRENT_USER, manipulovat s jeho obsahem a poté podklíč odstranit.
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é (informace o položkách základní úrovně v této hierarchii najdete v tématu Registry ). Při ukládání informací v registru vyberte odpovídající umístění na základě typu ukládané informace. Ujistěte se, že neničíte informace vytvořené jinými aplikacemi, protože to může způsobit, že tyto aplikace budou vykazovat neočekávané chování a mohou mít také nepříznivý vliv na vaši vlastní aplikaci.
Důležité
Tento typ implementuje IDisposable rozhraní . Až s použitím typu skončíte, měli byste ho odstranit přímo nebo nepřímo. Chcete-li odstranit typ přímo, zavolejte jeho Dispose metodu try
/catch
v bloku. Pokud ho chcete odstranit nepřímo, použijte konstruktor jazyka, jako using
je (v jazyce C#) nebo Using
(v jazyce Visual Basic). Další informace najdete v části "Použití objektu, který implementuje IDisposable" v IDisposable tématu rozhraní.
Klíče registru jsou základní jednotkou organizace v registru a dají se porovnat se složkami v Průzkumník souborů. Konkrétní klíč může mít podklíče, stejně jako složka může mít podsložky. Každý klíč je možné odstranit, pokud k tomu má uživatel příslušná oprávnění a klíč není základním klíčem nebo na úrovni přímo pod základními klíči. Ke každému klíči může být také přidruženo více hodnot (hodnota se dá porovnat se souborem), které se používají k ukládání informací – například informací o aplikaci nainstalované v počítači. Každá hodnota obsahuje jednu konkrétní informaci, kterou je možné v případě potřeby načíst nebo aktualizovat. Můžete například vytvořit RegistryKey pro vaši společnost pod klíčem HKEY_LOCAL_MACHINE\Software a 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ů.
Upozorňujeme, že informace uložené v registru jsou k dispozici jiným aplikacím a uživatelům, a proto by se neměly používat k ukládání dat zabezpečení nebo důležitých informací o aplikacích.
Upozornění
Nevystavujte RegistryKey objekty takovým způsobem, aby škodlivý program mohl vytvořit tisíce nesmyslných podklíčů nebo párů klíč/hodnota. Například neumožňují volajícím vstupovat do libovolného klíče nebo hodnoty.
Počínaje rozhraním .NET Framework 4 již není délka klíče registru omezena na 255 znaků.
Vlastnosti
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
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 sloužící ke komunikaci se vzdáleným objektem. (Zděděno od MarshalByRefObject) |
CreateSubKey(String) |
Vytvoří nový podklíč nebo otevře existující podklíč pro přístup pro zápis. |
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, 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, RegistryKeyPermissionCheck) |
Vytvoří nový podklíč nebo otevře existující podklíč pro přístup pro zápis pomocí zadané možnosti kontroly oprávnění. |
CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions) |
Vytvoří podklíč nebo otevře podklíč pro přístup pro zápis pomocí zadané kontroly oprávnění a možností registru. |
CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity) |
Vytvoří podklíč nebo otevře podklíč pro přístup pro zápis pomocí zadané možnosti kontroly oprávnění, možnosti registru a zabezpečení registru. |
CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity) |
Vytvoří nový podklíč nebo otevře existující podklíč pro přístup pro zápis pomocí zadané možnosti kontroly oprávnění a zabezpečení registru. |
DeleteSubKey(String) |
Odstraní zadaný podklíč. |
DeleteSubKey(String, Boolean) |
Odstraní zadaný podklíč a určuje, jestli je vyvolána výjimka, pokud podklíč nebyl nalezen. |
DeleteSubKeyTree(String) |
Odstraní podklíč a všechny podřízené podklíče rekurzivně. |
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. |
DeleteValue(String) |
Odstraní zadanou hodnotu z tohoto klíče. |
DeleteValue(String, Boolean) |
Odstraní zadanou hodnotu z tohoto klíče a určuje, jestli je vyvolána výjimka, pokud se hodnota nenajde. |
Dispose() |
Uvolní všechny prostředky používané aktuální instancí RegistryKey třídy . |
Equals(Object) |
Určí, zda se zadaný objekt rovná 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) |
Vytvoří klíč registru ze zadaného popisovače. |
FromHandle(SafeRegistryHandle, RegistryView) |
Vytvoří klíč registru ze zadaného popisovače a nastavení zobrazení registru. |
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í hashovací funkce. (Zděděno od Object) |
GetLifetimeService() |
Zastaralé.
Načte aktuální životnost objektu služby, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
GetSubKeyNames() |
Načte pole řetězců, které obsahuje všechny názvy podklíčů. |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
GetValue(String) |
Načítá hodnotu přidruženou k zadanému názvu. Vrátí hodnotu |
GetValue(String, Object) |
Načítá hodnotu přidruženou k zadanému názvu. Pokud se název nenajde, vrátí výchozí hodnotu, kterou zadáte. |
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. |
GetValueKind(String) |
Načte datový typ registru hodnoty přidružené k zadanému názvu. |
GetValueNames() |
Načte pole řetězců, které obsahuje všechny názvy hodnot přidružené k tomuto klíči. |
InitializeLifetimeService() |
Zastaralé.
Získá životnost objektu služby, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (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 , který představuje požadovaný klíč na místním počítači se zadaným zobrazením. |
OpenRemoteBaseKey(RegistryHive, String) |
Otevře nový RegistryKey , který představuje požadovaný klíč na vzdáleném počítači. |
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. |
OpenSubKey(String) |
Načte podklíč jen pro čtení. |
OpenSubKey(String, Boolean) |
Načte zadaný podklíč a určuje, zda má být pro klíč použit přístup pro zápis. |
OpenSubKey(String, RegistryKeyPermissionCheck) |
Načte zadaný podklíč pro přístup pro čtení nebo čtení/zápis. |
OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) |
Načte zadaný podklíč pro přístup pro čtení nebo čtení/zápis a vyžádá si zadaná přístupová práva. |
OpenSubKey(String, RegistryRights) |
Načte podklíč se zadaným názvem a přístupovými právy. K dispozici od .NET Framework 4.6. |
SetAccessControl(RegistrySecurity) |
Použije zabezpečení řízení přístupu systému Windows na existující klíč registru. |
SetValue(String, Object) |
Nastaví zadanou dvojici název/hodnota. |
SetValue(String, Object, RegistryValueKind) |
Nastaví hodnotu dvojice název/hodnota v klíči registru pomocí zadaného datového typu registru. |
ToString() |
Načte řetězcovou reprezentaci tohoto klíče. |
Explicitní implementace rozhraní
IDisposable.Dispose() |
Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu. Provede pro Close() aktuální klíč . |
Metody rozšíření
GetAccessControl(RegistryKey) |
Vrátí informace o zabezpečení klíče registru. |
GetAccessControl(RegistryKey, AccessControlSections) |
Vrátí informace o zabezpečení klíče registru. |
SetAccessControl(RegistryKey, RegistrySecurity) |
Změní atributy zabezpečení existujícího klíče registru. |