RegistryKey Třída

Definice

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í null , pokud pár název/hodnota v registru neexistuje.

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.

Platí pro

Viz také