RegistryKey Třída

Definice

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

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.

Platí pro

Viz také