Leerer Wert beim Auslesen aus Registry

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von DBOwner.

    Leerer Wert beim Auslesen aus Registry

    Hallo Leute,

    wer kennt das Problem, bzw. die Lösung?

    Der Befehl

    VB.NET-Quellcode

    1. Return Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue("CSDVersion")


    liefert mir einen leeren Wert, obwohl ein Wert in der Registry steht. Wähle ich einen anderen Schlüssel (z.B. CurrentBuild) aus funktioniert es.
    Datentypen sind gleich!
    Schreibweise ist richtig, also kein Tippfehler.

    Für Hilfe bin ich euch dankbar!
    Danke für die Antwort Dancger,

    habe ich soeben probiert, das Ergebnis bleibt allerdings.
    Ob es was mit der 64-Bit Version von Windows zu tun hat? Wieviel Bit hat dein Windows?

    Ich habe es mit verschiedenen Werten in der Registry probiert, einige davon lassen sich auslesen, einige dann wiederum nicht.
    Ich stehe total auf dem Schlauch, da es für mich einfach keinen Sinn ergibt das es mal geht und mal nicht.

    MfG
    DBOwner


    Fehler gefunden!
    Irgendwie geht der im Code auf den Registry-Pfad "
    SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion".
    Dort ist der gewünschte Schlüssel nicht vorhanden.

    Warum dieses Verhalten? Im Code steht explizit der Pfad ohne Wow6432Node.
    Liegt an der Registry-Redirection im Windows 64-Bit System.
    Eine mögliche Lösung ist die:

    VB.NET-Quellcode

    1. Dim rbkey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)
    2. Dim rkey As RegistryKey = rbkey.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion")
    3. Dim rpk As String = rkey.GetValue("CSDVersion")
    4. Return rpk

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „DBOwner“ ()