Überprüfen ob Registry Pfad existiert

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von TVX.

    Überprüfen ob Registry Pfad existiert

    Ich versuche überprüfen zu lassen ob bestimmte Registry Ordners (SubKeys) existieren.
    Konnte leider nichts genaues über Google/MSDN finden.
    Könnte mir jemand einen kleinen Beispiel zeigen wie man feststellt ob die Ordners existieren?
    Mir geht es nicht um Einträge sondern nur um die Existenz von Registry Pfaden.

    Beispiel Registry Pfad: "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
    Wäre es hier im Beispiel jetzt möglich die Existenz von dem Ordner "Run" unter "HKCU\Software\Microsoft\Windows\CurrentVersion" zu pürfen?
    Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed

    Hab mir den Post angeschaut. Mir ist es leider immer noch nicht klar wie ich das machen könnte...

    Hab gerade folgenden Code von hier gefunden:
    http://social.msdn.microsoft.com/forums/vstudio/en-US/388fa776-e605-42e0-bd39-ebfcebe9ceef/registry-folder-exist-or-not-using-cnet

    (Umgewandelt in VB)

    VB.NET-Quellcode

    1. Public Sub CheckRegistryPath()
    2. Dim r As RegistryKey
    3. Try
    4. 'HKEY_Current_User\\Software\\Microsoft\\Active Setup]
    5. r = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "Software\Microsoft\Active Setup")
    6. If r IsNot Nothing Then
    7. MessageBox.Show("Key exists")
    8. Else
    9. MessageBox.Show("Key does not exists")
    10. End If
    11. Catch ex As Exception
    12. MessageBox.Show(ex.Message)
    13. End Try
    14. End Sub


    Leider funktioniert das nicht, gibt mir nur false zurück...
    Fällt jemanden einen ähnlichen weg ein das so ähnlich zu überprüfen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Probier mal folgendes:

    VB.NET-Quellcode

    1. ​Private Function RegKeyNameExists(ByVal hive As RegistryHive, _
    2. ByVal path As String, _
    3. ByVal keyName As String) As Boolean
    4. Dim regKey As RegistryKey
    5. Select Case hive
    6. Case RegistryHive.CurrentUser
    7. regKey = Registry.CurrentUser.OpenSubKey(path) ' CurrentUser
    8. Case RegistryHive.LocalMachine
    9. regKey = Registry.LocalMachine.OpenSubKey(path) ' LocalMachine
    10. Case Else
    11. ' Throw New ArgumentException("Nur HKLM und HKCU sind erlaubt")
    12. Return False
    13. End Select
    14. If regKey Is Nothing Then Return False ' Schlüssel nicht vorhanden
    15. For Each regKeyName As String In regKey.GetValueNames()
    16. If regKeyName.Trim.ToUpper = keyName.Trim.ToUpper Then Return True ' Gefunden
    17. Next
    18. Return False ' Nicht gefunden
    19. End Function


    Sonst kannst du natürlich auch mit ​Registry.LocalMachine.GetSubKeyNames() überprüfen, ob dein Schlüssel bei den Unterschlüsseln dabei ist. Geht natürlich nicht nur mit ​LocalMachine.

    LG
    Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed

    Hey danke für den Code.
    Mir geht es aber nicht um Keys.
    Ich will NUR den Pfad auf Existenz prüfen ohne irgendwelche Keys dabei auf Existenz zu prüfen...
    Gibt es den keinen Weg das alles ohne einen bestimmten Key festzustellen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    VB.NET-Quellcode

    1. Public Sub CheckRegistryPath()
    2. Using RegTyp32 As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)'32bit
    3. Using RegTyp64 As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)'64bit
    4. Dim Key32 As RegistryKey = RegTyp32.OpenSubKey("Software\Microsoft\Active Setup", False)
    5. If Key32 IsNot Nothing Then
    6. MessageBox.Show("JA")
    7. Else
    8. Dim Key64 As RegistryKey = RegTyp64.OpenSubKey("Software\Microsoft\Active Setup", False)
    9. If Key64 IsNot Nothing Then
    10. MessageBox.Show("JA")
    11. Else
    12. MessageBox.Show("Nein")
    13. End If
    14. End If
    15. End Using
    16. End Using
    17. End Sub