Zugreifen auf die Registrierung mit Visual Basic .NET

Veröffentlicht: 14. Jul 2002 | Aktualisiert: 22. Jun 2004

Von Cat Francis

In diesem Artikel wird der Zugriff auf die Registrierung mithilfe der integrierten Visual-Basic®-.NET-Funktionen DeleteSetting, GetAllSettings, GetSetting und SaveSetting und mithilfe der Klassen Registry und RegistryKey der Common Language Runtime beschrieben. Der Artikel enthält Informationen zu den erforderlichen Berechtigungen. Darüber hinaus wird erklärt, wann der Registrierungs-Editor verwendet werden soll und wie programmgesteuerte Lese- und Schreibvorgänge in der Registrierung durchgeführt werden. Dieser Artikel enthält Links zu englischsprachigen Seiten.

Auf dieser Seite

Einführung Einführung
Voraussetzungen Voraussetzungen
Zugreifen auf die Registrierung mit Visual-Basic-.NET-Funktionen Zugreifen auf die Registrierung mit Visual-Basic-.NET-Funktionen
Zugreifen auf die Registrierung mit .NET Framework Zugreifen auf die Registrierung mit .NET Framework
Berechtigungen Berechtigungen
Zugreifen auf die Registrierung mit dem Registrierungs-Editor Zugreifen auf die Registrierung mit dem Registrierungs-Editor
Schlussfolgerung Schlussfolgerung

Einführung

Beim Programmieren in Visual Basic .NET kann der Zugriff auf die Registrierung wahlweise über Visual-Basic-.NET-Funktionen oder die Registrierungsklassen von .NET Framework erfolgen. Die Visual-Basic-Funktionen sind zwar in den meisten Fällen ausreichend, einige Situationen erfordern jedoch die Verwendung von .NET Framework.

Die Registrierung verwaltet Informationen vom Betriebssystem sowie Informationen von installierten Anwendungen. Das Arbeiten mit der Registrierung kann unter Umständen die Sicherheit beeinträchtigen. Code, mit dem auf die Registrierung zugegriffen wird, muss deshalb genau überprüft werden, um sicherzustellen, dass er die Sicherheit des Rechners, auf dem er ausgeführt wird, nicht gefährdet.

Registrierungseinträge sind aus zwei Teilen zusammengesetzt: dem Wertnamen und dem Wert. Einträge sind unter Schlüsseln und Unterschlüsseln in einem System gespeichert, das wie das Dateisystem aufgebaut ist, bei dem Dateien in Verzeichnissen und Unterverzeichnissen gespeichert sind.

 

Voraussetzungen

Sie ziehen den größten Nutzen aus diesem Artikel, wenn folgende Voraussetzungen gegeben sind:

  • Sie sind mit früheren Versionen von Visual Basic vertraut.

  • Sie kennen den Aufbau und Zweck der Registrierung.

  • Sie wissen, wie sich das Zugreifen auf die Registrierung auf die Sicherheit auswirkt.

 

Zugreifen auf die Registrierung mit Visual-Basic-.NET-Funktionen

Visual Basic .NET bietet vier Funktionen zum Zugreifen auf die Registrierung. Um diese Funktionen zu verwenden, müssen Sie über die Berechtigungen Read und Write (Schreib- und Leseberechtigung) der RegistryPermissionAccess-Enumeration verfügen. Jeder Code, der mit voller Vertrauenswürdigkeit ausgeführt wird (gemäß der Standardsicherheitsrichtlinie ist dies jeder Code, der auf der lokalen Festplatte des Benutzers installiert ist), verfügt über die notwendigen Berechtigungen zum Zugreifen auf die Registrierung. Weitere Informationen finden Sie unter RegistryPermission Class.

Visual Basic .NET-Funktion

Beschreibung

DeleteSetting

Löscht eine Abschnitts- oder Schlüsseleinstellung aus dem Eintrag einer Anwendung in der Registrierung.

GetSetting

Gibt den Wert einer Schlüsseleinstellung von einem Eintrag einer Anwendung in der Registrierung zurück.

GetAllSettings

Gibt eine Liste der Schlüsseleinstellungen und ihrer Werte von einem Eintrag einer Anwendung in der Registrierung zurück.

SaveSetting

Erstellt oder speichert einen Anwendungseintrag in der Registrierung.

Anmerkung Abschnittsnamen können nicht mit der GetSetting-Funktion zurückgegeben werden.

Wenn eine Schlüsseleinstellung nicht gespeichert werden kann, wird eine ArgumentException-Ausnahme ausgelöst. Weitere Informationen zu dieser Ausnahme finden Sie unter ArgumentException.
Im folgenden Beispiel werden ein Registrierungsschlüssel und zwei Unterschlüssel erstellt. Es gibt zunächst den Wert des ersten Schlüssels und dann den Wert des ersten Schlüssels und aller seiner Unterschlüssel aus. Anschließend wird der zweite Unterschlüssel gelöscht und der Wert des ersten Schlüssels und aller seiner Unterschlüssel gedruckt, um das Löschen des zweiten Unterschlüssels zu bestätigen.

' Ersten Schlüssel erstellen.
SaveSetting("TestApp","Startup","FirstKey","First")
' Ersten Unterschlüssel erstellen.
SaveSetting("TestApp","FirstKey","FirstSubKey","FirstSub")
' Zweiten Unterschlüssel erstellen.
SaveSetting("TestApp","FirstKey","SecondSubKey","SecondSub")
Try
   ' Wert des ersten Schlüssels schreiben.
   Console.WriteLine ((GetSetting("TestApp","Startup","FirstKey"))
   ' Ersten Schlüssel und zwei Unterschlüssel schreiben.
   Console.WriteLine (GetAllSettings("TestApp","Startup"))
   Catch e As ArgumentException
   Catch e As Exception
   Console.WriteLine (e.GetType.ToString)
   Finally
End Try
DeleteSetting("TestApp","FirstKey","SecondSubKey")
Try
   Console.WriteLine (GetSetting("TestApp","Startup","FirstKey"))
   Console.WriteLine (GetAllSettings("TestApp","Startup"))
   Catch e As ArgumentException
   Catch e As Exception
   Console.WriteLine (e.GetType.ToString)
   Finally
End Try

Die Verwendung der integrierten Registrierungszugriffsfunktionen ist eingeschränkt: Sie können nur auf die Registrierungsschlüssel unter HKEY_CURRENT_USER\Software\VB and VBA Program Settings zugreifen. Dazu müssen Sie am System angemeldet sein, denn der HKEY_CURRENT_USER-Registrierungsschlüssel wird erst mit dem Anmelden am System aktiviert.
Registrierungseinstellungen, die von einem nicht-interaktiven Prozess aufgerufen werden müssen (z.B. MTX.EXE), sollten unter dem Registrierungsschlüssel HKEY_LOCAL_MACHINE\Software\ oder HKEY_USER\DEFAULT\Software gespeichert werden.

 

Zugreifen auf die Registrierung mit .NET Framework

Da Sie die Funktionen GetSetting und SaveSetting nur zum Zugreifen auf die Schlüssel unter HKEY_CURRENT_USER\Software\VB and VBA Program Settings verwenden können, finden Sie die Verwendung dieser Funktionen ggf. zu beschränkt. In diesem Fall können Sie die Klassen Registry und RegistryKey im Microsoft.Win32-Namespace von .NET Framework verwenden. Weitere Informationen finden Sie unter Registry und RegistryKey.

Die Registry-Klasse beinhaltet die Registrierungsbasisschlüssel, die zum Zugreifen auf die Unterschlüssel und ihre Werte verwendet werden können. Die Basisschlüssel selbst sind schreibgeschützt. In der folgenden Tabelle sind die sieben in der Registry-Klasse enthaltenen Schlüssel aufgelistet und beschrieben.

Schlüssel

Beschreibung

ClassesRoot

Bestimmt die Dokumenttypen und die mit diesen Typen verknüpften Eigenschaften.

CurrentConfig

Enthält Hardware-Konfigurationsinformationen, die nicht benutzerspezifisch sind.

CurrentUser

Enthält Informationen zu den aktuellen Benutzereinstellungen, z.B. Umgebungsvariablen.

DynData

Enthält dynamische Registrierungsdaten, z.B. die Daten, die von virtuellen Gerätetreibern verwendet werden.

LocalMachine

Enthält fünf Unterschlüssel (Hardware, SAM, Security, Software und System), die die Konfigurationsdaten für den lokalen Rechner enthalten.

PerformanceData

Enthält Leistungsinformationen für Softwarekomponenten.

Users

Enthält Informationen zu den Standardbenutzereinstellungen.

Das folgende Beispiel veranschaulicht, wie ein DWORD-Wert aus HKEY_CURRENT_USER gelesen wird:

Imports Microsoft.Win32
Dim regVersion As RegistryKey
Dim keyValue As String
keyValue = Software\\Microsoft\\TestApp\\1.0
regVersion = Registry.CurrentUser.OpenSubKey(keyValue, False)
Dim intVersion As Integer = 0
If (Not regVersion Is Nothing) Then
    intVersion = regVersion.GetValue("Version", 0)
    regVersion.Close()
End If

Im folgenden Beispiel wird ein DWORD-Wert gelesen, inkrementell erhöht und dann in HKEY_CURRENT_USER geschrieben:

Imports Microsoft.Win32
Dim regVersion As RegistryKey
regVersion = 
Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\TestApp\\1.0", True)
If regVersion Is Nothing Then
    ' Schlüssel nicht vorhanden; muss erstellt werden.
    regVersion = 
Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\TestApp\\1.0")
End If
 
Dim intVersion As Integer = 0
If (Not regVersion Is Nothing) Then    intVersion = regVersion.GetValue("Version", 0)
    intVersion = intVersion + 1
    regVersion.SetValue("Version", intVersion)
    regVersion.Close()
End If

 

Berechtigungen

Die RegistryPermission-Klasse, die sich im System.Security.Permission-Namespace befindet, steuert den Zugriff auf die Registrierungsvariablen. Registrierungsvariablen sollten nicht in Speicherbereichen gespeichert werden, wo Code ohne RegistryPermission darauf zugreifen kann. Ebenso sollte beim Zuweisen von Berechtigungen die niedrigste Berechtigung vergeben werden, die zum Durchführen der Aufgabe erforderlich ist. Weitere Informationen finden Sie unter RegistryPermission und System.Security.Permissions.

Die Werte für den Registrierungszugriff sind in der RegistryPermissionAccess-Enumeration definiert. Weitere Informationen finden Sie unter RegistryPermissionAccess. In der folgenden Tabelle sind die Elemente dieser Aufzählung aufgelistet.

Wert

Beschreibung

AllAccess

Erstellungs-, Lese- und Schreibzugriff auf die Registrierungsvariablen.

Create

Erstellungszugriff auf die Registrierungsvariablen.

NoAccess

Kein Zugriff auf die Registrierungsvariablen.

Read

Lesezugriff auf die Registrierungsvariablen.

Write

Schreibzugriff auf die Registrierungsvariablen.

Anmerkung Sollten Sie Berechtigungen kombinieren müssen, z.B. Gewähren des Lese- und Schreibzugriffs bei gleichzeitiger Verweigerung des Erstellungszugriffs, können Sie die Berechtigungen mit einer bitweisen Or-Operation wie im folgenden Beispiel kombinieren:

RegistryPermissionAccess.Write Or RegistryPermissionAccess.Read _
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TestApp"

 

Zugreifen auf die Registrierung mit dem Registrierungs-Editor

Beim Arbeiten mit Weitergabeprojekten können Sie auch mithilfe des Registrierungs-Editors die Registrierungsschlüssel und -werte angeben, die zur Registrierung des Zielcomputers hinzugefügt werden sollen. Weitere Informationen finden Sie unter Registry Editor.

So greifen Sie auf den Registrierungs-Editor zu

  • Öffnen Sie ein Weitergabeprojekt.

  • Zeigen Sie im Menü Ansicht auf Editor und klicken Sie dann auf Registrierung.

Weitere Informationen zur Verwendung des Registrierungs-Editors in Weitergabeprojekten finden Sie unter Registry Settings Management in Deployment.

 

Schlussfolgerung

Die Registrierung ist der optimale Speicherort zum Speichern von Informationen zu Ihrer Anwendung und zum Speichern von individuellen Benutzereinstellungen. Unter Umständen müssen Sie auch Informationen zur Systemhardware oder zu Anwendungen, mit denen Ihre Anwendung in Interaktion tritt, überprüfen.

Bei den meisten Projekten reicht es aus, über Visual-Basic-Laufzeitfunktionen auf die Registrierung zuzugreifen. In einigen Fällen müssen Sie dazu die Klassen Registry und RegistryKey von .NET Framework verwenden. Beide Methoden sind relativ einfach. Da jedoch der Zugriff auf die Registrierung Auswirkungen auf die Sicherheit hat, sollten Sie darauf achten, dass keine Sicherheitslücken entstehen, wenn Sie zum Beispiel ein Nur-Text-Kennwort oder andere vertrauliche Informationen in einen Schlüssel einbinden.