Tipp 0009 Registrierung manipulieren
Autor/Einsender:
Datum:
  Michael Werner
15.02.2003
Entwicklungsumgebung:   VB.Net 2002
Framework:   1.0
Dieser Tipp zeigt, wie man, an beliebiger Stelle in der Registrierung, Schlüssel erstellen und löschen kann, Einträge vornimmt bzw. Einträge löscht. Darüber hinaus können Werte ausgelesen und verändert werden, es kann geprüft werden, ob ein Schlüssel existiert, oder, ob ein Eintrag existiert.
Benötigt werden im Namespace Microsoft.Win32 die Klassen Registry und RegistryKey, in denen Methoden wie z.B. CreateSubKey, DeleteSubKey, OpenSubKey, SetValue, GetValue, DeleteValue usw. ein - gegenüber VB 6 - wesentlich einfacheres Registry-Handling möglichen machen.
Als "Nebenprodukt" zeigt dieser Tipp auch, wie eine einfache Art der Ausnahmebehandlung mit den Schlüsselwörtern Try-Catch-End Try durchgeführt werden kann.
Hinweis
Die Benutzung dieses Tipps geschieht auf eigene Gefahr!
Löschen oder verändern Sie in der Registrierung niemals Schlüssel oder Einträge, die Sie nicht genau kennen!
 
Imports Microsoft.Win32

Public Class Form1
  Inherits System.Windows.Forms.Form
Vom Windows Form Designer generierter Code
  Sub CreateKey(ByVal sKey As String)
    Dim objCurrUser As RegistryKey = Registry.CurrentUser
    Dim objSubKey As RegistryKey

    If IsKey(sKey) Then
      MsgBox("Der Schlüssel existiert bereits!", _
            MsgBoxStyle.Exclamation)
      Exit Sub
    End If

    Try
      objSubKey = objCurrUser.CreateSubKey(sKey)

      MessageBox.Show("Der Registryschlüssel " & vbNewLine & _
              objSubKey.Name & vbNewLine & " wurde erstellt.", _
              "Schlüssel wurde erstellt", MessageBoxButtons.OK, _
              MessageBoxIcon.Information)
    Catch
      MessageBox.Show("Fehler", "Fehler", _
              MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    End Try
  End Sub

  Sub DeleteKey(ByVal sKey As String)
    Dim objCurrUser As RegistryKey = Registry.CurrentUser

    Try
      objCurrUser.DeleteSubKey (sKey)

      MessageBox.Show("Der Registryschlüssel " & vbNewLine & _
              sKey & vbNewLine & " wurde gelöscht.", _
              "Schlüssel wurde gelöscht", _
              MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    Catch
      MessageBox.Show("Schlüssel " & vbNewLine & _
              sKey & vbNewLine & _
              " nicht vorhanden", _
              "Nicht vorhanden", _
              MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    End Try
  End Sub

  Function IsKey(ByVal sKey As String) As Boolean
    Dim objCurrUser As RegistryKey = Registry.CurrentUser
    Dim objSubKey As RegistryKey

    Try
      objSubKey = objCurrUser.OpenSubKey(sKey, True)
      objSubKey.Close()
      Return True
    Catch
      Return False
    End Try
  End Function

  Sub SaveValue(ByVal sKey As String, ByVal sEntry As String, _
          ByVal sValue As String)
    Dim objCurrUser As RegistryKey = Registry.CurrentUser
    Dim objSubKey As RegistryKey

    Try
      objSubKey = objCurrUser.OpenSubKey(sKey, True)

      objSubKey.SetValue(sEntry, sValue)

      MessageBox.Show("Der Eintrag: " & vbNewLine & _
            sEntry & "   " & sValue & vbNewLine & _
            " wurde gespeichert.", "Eintrag wurde gespeichert", _
            MessageBoxButtons.OK, MessageBoxIcon.Information)

      objSubKey.Close()
    Catch
      MessageBox.Show( _
            "Der Eintrag konnte nicht geschrieben werden." & _
            vbNewLine & "...", "Eintrag nicht gespeichert!", _
            MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    End Try
  End Sub

  Sub DeleteValue(ByVal sKey As String, ByVal sEntry As String)
    Dim objCurrUser As RegistryKey = Registry.CurrentUser
    Dim objSubKey As RegistryKey

    If IsValue(sKey, sEntry) = False Then
      MsgBox("Der Eintrag ist nicht vorhanden!", _
              MsgBoxStyle.Exclamation)
      Exit Sub
    End If

    Try
      objSubKey = objCurrUser.OpenSubKey(sKey, True)
      If (MessageBox.Show( _
            "Sind Sie sicher, dass Sie den Eintrag" & vbNewLine & _
            txtEntry.Text & vbNewLine & " zusammen mit seinem " & _
            "Wert wirklich löschen wollen?", & vbNewLine & _
            "Achtung! Löschen Sie nur einen unbedenklichen " & _
            "Eintrag!", MessageBoxButtons.YesNoCancel, _
            MessageBoxIcon.Warning)) = DialogResult.Yes Then
        objSubKey.DeleteValue(sEntry, True)
        objSubKey.Close()

        MessageBox.Show("Der Eintrag: " & vbNewLine & _
            sEntry & " wurde mit seinem Wert gelöscht.", _
            "Eintrag wurde gelöscht", _
            MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
      End If
    Catch
      MessageBox.Show("Eintrag nicht vorhanden", _
            "Kein Eintrag vorhanden", MessageBoxButtons.OK, _
            MessageBoxIcon.Exclamation)
    End Try
  End Sub

  Function ReadValue(ByVal sKey As String, _
          ByVal sEntry As String) As String
    Dim objCurrUser As RegistryKey = Registry.CurrentUser
    Dim objSubKey As RegistryKey

    Try
      objSubKey = objCurrUser.OpenSubKey(sKey, True)
      Return objSubKey.GetValue(sEntry).ToString
      objSubKey.Close()
    Catch
      Return ""
    End Try
  End Function

  Function IsValue(ByVal sKey As String, _
          ByVal sEntry As String) As Boolean
    Dim objCurrUser As RegistryKey = Registry.CurrentUser
    Dim objSubKey As RegistryKey
    Dim sValue As String

    Try
      objSubKey = objCurrUser.OpenSubKey(sKey, True)
      sValue = objSubKey.GetValue(sEntry).ToString
      Return True
      objSubKey.Close()
    Catch
      Return False
    End Try
  End Function

  Private Sub btnCreateKey_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles btnCreateKey.Click
    CreateKey (txtKey.Text)
  End Sub

  Private Sub btnDeleteKey_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles btnDeleteKey.Click
    If IsKey(txtKey.Text) Then
      If (MessageBox.Show( _
          "Sind Sie sicher, dass Sie den Schlüssel" & vbNewLine & _
          txtKey.Text & vbNewLine & "wirklich löschen wollen?", _
          "Achtung! Löschen Sie nur einen unbedenklichen " & _
          "Schlüssel!", MessageBoxButtons.YesNoCancel, _
          MessageBoxIcon.Warning)) = DialogResult.Yes Then
        DeleteKey (txtKey.Text)
      End If

    Else
      MessageBox.Show("Der Schlüssel " & vbNewLine & _
              txtKey.Text & vbNewLine & _
              "ist nicht vorhanden", "Nicht vorhanden", _
              MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    End If
  End Sub

  Private Sub btnSaveValue_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles btnSaveValue.Click
    SaveValue(txtKey.Text, txtEntry.Text, txtValue.Text)
  End Sub

  Private Sub btnDeleteValue_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles btnDeleteValue.Click
    DeleteValue(txtKey.Text, txtEntry.Text)
  End Sub

  Private Sub btnReadValue_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles btnReadValue.Click
    lblReadValue.Text = ReadValue(txtKey.Text, txtEntry.Text)
  End Sub

  Private Sub btnIsKey_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles btnIsKey.Click
    If IsKey(txtKey.Text) Then
      MessageBox.Show("Der Schlüssel " & txtKey.Text & _
            " ist vorhanden.", "Schlüssel existiert", _
            MessageBoxButtons.OK, MessageBoxIcon.Information)
    Else
      MessageBox.Show("Der Schlüssel " & txtKey.Text & _
            " ist nicht vorhanden.", "Schlüssel existiert nicht", _
            MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    End If
  End Sub

  Private Sub btnIsValue_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles btnIsValue.Click
    If IsValue(txtKey.Text, txtEntry.Text) Then
      MessageBox.Show("Der Eintrag " & txtEntry.Text & _
            " ist vorhanden.", "Eintrag existiert", _
            MessageBoxButtons.OK, MessageBoxIcon.Information)
    Else
      MessageBox.Show("Der Eintrag " & txtEntry.Text & _
            " ist nicht vorhanden.", "Eintrag existiert nicht", _
            MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    End If
  End Sub

  Private Sub btnExit_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles btnExit.Click
    Me.Close()
  End Sub
End Class
 
Links zum Thema
Anwendungsdaten in der Registry speichern
Einträge eines Registry-Schlüssels auslesen

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (8 kB) Downloads bisher: [ 1675 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 21. Januar 2012