Werte aus der Registry lesen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von 0belixx.

    Werte aus der Registry lesen

    Hallo Leute

    ich möchte einen Wert aus der Registry in eine Variable schreiben so weit so gut

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim TestRegistry As String
    3. 'TestRegistry = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\100\Tools\Shell\DataProject\", "DefaultParameterEscapeChar", Nothing)
    4. 'TestRegistry = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server", "InstalledInstances", Nothing)
    5. If TestRegistry = "" Then
    6. MsgBox("Der Schlüssel existiert nicht!")
    7. Else
    8. MsgBox("Inhalt des Schlüssels: " & TestRegistry)
    9. End If
    10. Me.Close()
    11. End Sub




    Der ober auf User funktioniert der untere auf Local Maschine funktioniert nicht.

    bei Ausführung als Administrator genau das selbe, bei Windows7 32bit und 64bit das selbe

    Für eine zündene Idee wäre ich dankbar.

    0belixx
    Danke aber das geht auch nicht. Denke das es daran liegt das der Key ein Reg_Multi_SZ ist.
    Hab das jetzt mal so probiert

    VB.NET-Quellcode

    1. Dim ReadSQLServer = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server", "InstalledInstances", "No Key Found")
    2. Dim SQLServer() As String = DirectCast(ReadSQLServer, String())
    3. MsgBox(SQLServer(0))

    Das läuft unter 32 bit aber bei 64 bit bekomme ich die Fehlermeldung "Das Objekt des Typ "System.String" kann nicht in Typ "System.String[]" umgewandelt werden.
    Vieleicht fällt jemandem dazu was ein.
    Was sagt denn RegEdit, wenn Du Dir diesen Key ansiehst?
    Bilder
    • Zwischenablage01.jpg

      6,89 kB, 273×125, 128 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

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

    Hi RodFromGermany

    Nix besonderes ist halt ein Wert drin (MSSQLSERVER), ist jedenfalls bei meinem Test Rechner so. Kann natürlich auch eine andere Instanz sein, darum kann ich das ja auch nicht fest verdrahten sonden muss diesen Instanznamen abfragen.

    bis dann 0belixx
    Das ist mir völlig klar.
    Fakt ist aber, dass Du kein Recht hast, diesen Key abzufragen.
    Wenn ich RegEdit miot Admin-Rechten ausführe (W7), bekomme ich die Keys, auf die ich keinen Zugriff habe, erst gar nicht angezeigt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hast du dir meine Antwort durchgelesen?
    Du versuchst "No Key Found" in ein String-Array zu casten. "No Key Found" ist aber ein einzelner String, kein Array! Wenn der Key nicht vorhanden ist, wird der defaultValue zurückgegeben, den du der Funktion ja übergibst (das ist das "No Key Found"). Somit wird in der folgenden Zeile eine Ausnahme ausgelöst, da ein String nicht zu String[] gecastet werden kann.

    Gruß
    ~blaze~
    Hi

    ich hab die Antwort schon werstanden, dann ist mir unklar warum es bei 32bit funktionier da wird ein Eintrag gefunden. Nur bei 64bit kommt ein Fehler. Es ist in beiden Testumgebungen der selbe Wert in dem Schlüssel.

    bis dann