Registry-Klasse

Aktualisiert: November 2007

Stellt RegistryKey-Objekte, die die Stammschlüssel in der Windows-Registrierung darstellen, sowie static-Methoden für den Zugriff auf Schlüssel-/-Wert-Paare bereit.

Namespace:  Microsoft.Win32
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public static class Registry
/** @attribute ComVisibleAttribute(true) */
public final class Registry
public final class Registry

Diese Klasse stellt die Gruppe von Standardstammschlüsseln zur Verfügung, die sich in der Registrierung von Computern unter Windows befinden. Die Registrierung ist für die Speicherung von Informationen über Anwendungen, Benutzer und Standardsystemeinstellungen vorgesehen. Anwendungen können z. B. Daten in der Registrierung speichern, die nach Beendigung der Anwendung erhalten bleiben sollen, und können beim Neustarten der Anwendung wieder auf diese Daten zugreifen. Es können z. B. Farbeinstellungen, Bildschirmpositionen oder Fenstergrößen gespeichert werden. Dies kann für jeden Benutzer erfolgen, indem die Daten an verschiedenen Stellen der Registrierung gespeichert werden.

Die Basisinstanzen (Stamminstanzen) der RegistryKey-Klasse, die von der Registry-Klasse verfügbar gemacht werden, stellen den grundlegenden Speichermechanismus für Unterschlüssel und Werte der Registrierung dar. Alle Schlüssel sind schreibgeschützt, da die Registrierung ihr Vorhandensein erfordert. Im Folgenden sind die von Registry verfügbar gemachten Schlüssel aufgeführt:

CurrentUser

Speichert Informationen über Benutzereinstellungen.

LocalMachine

Speichert Konfigurationsinformationen für den lokalen Computer.

ClassesRoot

Speichert Informationen über Typen (und Klassen) und ihre Eigenschaften.

Users

Speichert Informationen über die Standardkonfiguration des Benutzers.

PerformanceData

Speichert Leistungsinformationen für Softwarekomponenten.

CurrentConfig

Speichert benutzerunabhängige Hardwareinformationen.

DynData

Speichert dynamische Daten.

Wenn Sie den Stammschlüssel kennen, unter dem Informationen in der Registrierung gespeichert oder abgerufen werden sollen, können Sie die RegistryKey-Klasse verwenden, um Unterschlüssel hinzuzufügen bzw. zu entfernen und die Werte eines bestimmten Schlüssels zu verändern.

Hardwarekomponenten können Informationen automatisch über die Plug & Play-Schnittstelle in der Registrierung ablegen. Über Standard-APIs kann Installationssoftware für Gerätetreiber Informationen in die Registrierung schreiben.

Statische Methoden zum Abrufen und Festlegen von Werten

In .NET Framework, Version 2.0 enthält die Registry-Klasse außerdem die staticGetValue-Methode und die SetValue-Methode zum Festlegen und Abrufen von Registrierungsschlüsseln. Diese Methoden öffnen und schließen Registrierungsschlüssel bei jeder Verwendung. Daher sind sie beim Zugriff auf eine große Anzahl von Werten weniger leistungsfähig als die entsprechenden Methoden in der RegistryKey-Klasse.

Die RegistryKey-Klasse stellt außerdem Methoden bereit, mit deren Hilfe Sie die Windows-Zugriffssteuerungssicherheit für Registrierungsschlüssel festlegen, den Datentyp eines Werts vor dem Abrufen überprüfen und Schlüssel löschen können.

Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Beispiel werden die Stammschlüssel dargestellt, und im zweiten Beispiel werden die staticGetValue-Methode und die SetValue-Methode veranschaulicht.

Beispiel 1

Das folgende Codebeispiel veranschaulicht das Abrufen von Unterschlüsseln aus dem Schlüssel HKEY_USERS. Die Namen werden dann auf dem Bildschirm ausgegeben. Erstellen Sie mit der OpenSubKey-Methode eine Instanz des betreffenden Unterschlüssels. Mit den weiteren Operationen von RegistryKey können Sie diesen Schlüssel verändern.

using System;
using Microsoft.Win32;

class Reg {
    public static void Main() {

        // Create a RegistryKey, which will access the HKEY_USERS
        // key in the registry of this machine.
        RegistryKey rk = Registry.Users;

        // Print out the keys.
        PrintKeys(rk);
    }

    static void PrintKeys(RegistryKey rkey) {

        // Retrieve all the subkeys for the specified key.
        String [] names = rkey.GetSubKeyNames();

        int icount = 0;

        Console.WriteLine("Subkeys of " + rkey.Name);
        Console.WriteLine("-----------------------------------------------");

        // Print the contents of the array to the console.
        foreach (String s in names) {
            Console.WriteLine(s);

            // The following code puts a limit on the number
            // of keys displayed.  Comment it out to print the
            // complete list.
            icount++;
            if (icount >= 10)
                break;
        }
    }
}


import System.*;
import Microsoft.Win32.*;

class Reg
{
    public static void main(String[] args)
    {
        // Create a RegistryKey, which will access the HKEY_USERS
        // key in the registry of this machine.
        RegistryKey rk = Registry.Users;
        // Print out the keys.
        PrintKeys(rk);
    } //main

    static void PrintKeys(RegistryKey rKey)
    {
        // Retrieve all the subkeys for the specified key.
        String names[] = rKey.GetSubKeyNames();

        int iCount = 0;

        Console.WriteLine("Subkeys of " + rKey.get_Name());
        Console.WriteLine("-----------------------------------------------");
        // Print the contents of the array to the console.
        String s = null;
        for (int iCtr = 0; iCtr < names.get_Length(); iCtr++) {
            s = names[iCtr];
            Console.WriteLine(s);
            // The following code puts a limit on the number
            // of keys displayed.  Comment it out to print the
            // complete list.
            iCount++;
            if (iCount >= 10) {
                break;
            }
        }
    } //PrintKeys
} //Reg


Beispiel 2

Im folgenden Codebeispiel werden Werte verschiedener Datentypen in einem Beispielschlüssel gespeichert, der gleichzeitig erstellt wird. Anschließend werden die Werte abgerufen und angezeigt. Im Beispiel werden das Speichern und Abrufen des (namenlosen) Name-/Wert-Standardpaars sowie die Verwendung von defaultValue veranschaulicht, wenn kein Name-/Wert-Paar vorhanden ist.

using System;
using Microsoft.Win32;

public class Example
{
    public static void Main()
    {
        // The name of the key must include a valid root.
        const string userRoot = "HKEY_CURRENT_USER";
        const string subkey = "RegistrySetValueExample";
        const string keyName = userRoot + "\\" + subkey;

        // An int value can be stored without specifying the
        // registry data type, but long values will be stored
        // as strings unless you specify the type. Note that
        // the int is stored in the default name/value
        // pair.
        Registry.SetValue(keyName, "", 5280);
        Registry.SetValue(keyName, "TestLong", 12345678901234,
            RegistryValueKind.QWord);

        // Strings with expandable environment variables are
        // stored as ordinary strings unless you specify the
        // data type.
        Registry.SetValue(keyName, "TestExpand", "My path: %path%");
        Registry.SetValue(keyName, "TestExpand2", "My path: %path%",
            RegistryValueKind.ExpandString);

        // Arrays of strings are stored automatically as 
        // MultiString. Similarly, arrays of Byte are stored
        // automatically as Binary.
        string[] strings = {"One", "Two", "Three"};
        Registry.SetValue(keyName, "TestArray", strings);

        // Your default value is returned if the name/value pair
        // does not exist.
        string noSuch = (string) Registry.GetValue(keyName, 
            "NoSuchName",
            "Return this default if NoSuchName does not exist.");
        Console.WriteLine("\r\nNoSuchName: {0}", noSuch);

        // Retrieve the int and long values, specifying 
        // numeric default values in case the name/value pairs
        // do not exist. The int value is retrieved from the
        // default (nameless) name/value pair for the key.
        int tInteger = (int) Registry.GetValue(keyName, "", -1);
        Console.WriteLine("(Default): {0}", tInteger);
        long tLong = (long) Registry.GetValue(keyName, "TestLong",
            long.MinValue);
        Console.WriteLine("TestLong: {0}", tLong);

        // When retrieving a MultiString value, you can specify
        // an array for the default return value. 
        string[] tArray = (string[]) Registry.GetValue(keyName,
            "TestArray",
            new string[] {"Default if TestArray does not exist."});
        for(int i=0; i<tArray.Length; i++)
        {
            Console.WriteLine("TestArray({0}): {1}", i, tArray[i]);
        }

        // A string with embedded environment variables is not
        // expanded if it was stored as an ordinary string.
        string tExpand = (string) Registry.GetValue(keyName,
             "TestExpand", 
             "Default if TestExpand does not exist.");
        Console.WriteLine("TestExpand: {0}", tExpand);

        // A string stored as ExpandString is expanded.
        string tExpand2 = (string) Registry.GetValue(keyName,
            "TestExpand2",
            "Default if TestExpand2 does not exist.");
        Console.WriteLine("TestExpand2: {0}...",
            tExpand2.Substring(0, 40));

        Console.WriteLine("\r\nUse the registry editor to examine the key.");
        Console.WriteLine("Press the Enter key to delete the key.");
        Console.ReadLine();
        Registry.CurrentUser.DeleteSubKey(subkey);
    }
}
//
// This code example produces output similar to the following:
//
//NoSuchName: Return this default if NoSuchName does not exist.
//(Default): 5280
//TestLong: 12345678901234
//TestArray(0): One
//TestArray(1): Two
//TestArray(2): Three
//TestExpand: My path: %path%
//TestExpand2: My path: D:\Program Files\Microsoft.NET\...
//
//Use the registry editor to examine the key.
//Press the Enter key to delete the key.


System.Object
  Microsoft.Win32.Registry

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 3.5, 2.0
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft