Problem mit Auslesen von HKEY_LOCAL_MACHINE

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Problem mit Auslesen von HKEY_LOCAL_MACHINE

    Neu

    Moin!

    ich möchte einen Reg-Schlüssel auslesen und bekommt ein Nothing - aus meiner sicht müsste alles passen.



    Kann mir einer weiterhelfen?

    Der Code nochmal im "Klartext" im Anschluss.

    Gruß Jan

    VB.NET-Quellcode

    1. Private Function GetThemeName(Name As String) As String
    2. Dim Result As String = ""
    3. Const userRoot As String = "HKEY_LOCAL_MACHINE"
    4. Dim subkey As String = "\Software\EBL\Theme"
    5. Dim keyName As String = userRoot & subkey
    6. Try
    7. result = CStr(Registry.GetValue(keyName, Name, ""))
    8. Catch
    9. Return Result
    10. End Try
    11. Return Result
    12. End Function

    Neu

    Entweder Du machst den Zugriff anders oder Du wechselst bei Deinen Projekteigenschaften -> Anwendung die Ziel-CPU bzw. schaltest das 32-Bit bevorzugen um, siehe stackoverflow. Dann klappt's.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Neu

    @jan99 Fang an und schmeiß den VisualBasic-Namespace raus und nimm .NET-Klassen.
    (Richtig) auf die Registry zugreifen
    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).
    VB-Fragen über PN / Konversation werden ignoriert!

    Neu

    Ich will ja kein Korinthenextraktor sein, aber Registry.GetValue kommt aus dem Microsoft.Win32-Namespace, nicht aus dem VB6-Namespace. Aber ja, Vorgehen mit .Net-Klassen sind sinnvoller - wie bei stackoverflow zu lesen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Neu

    Moin!

    ich habe mir das Tutorial durchgelesen und mein Code sieht jetzt wie folgt aus:

    VB.NET-Quellcode

    1. Private Function GetThemeName(Name As String) As String
    2. Dim Result As String = ""
    3. Dim subkey As String = "\Software\EBL\Theme"
    4. Return GetRegistryKeyHKLM(Name, subkey)
    5. End Function
    6. Private Function GetRegistryKeyHKLM(Name As String, Subkey As String) As String
    7. Dim Result As String = ""
    8. Try
    9. Using Key As RegistryKey = Registry.LocalMachine.OpenSubKey(Subkey)
    10. Result = CStr(Key.GetValue(Name))
    11. End Using
    12. Catch
    13. Return Result
    14. End Try
    15. Return Result
    16. End Function


    An der Registry habe ich nichts geändert und deshalb gilt noch der Aufbau vom Anfang.

    Kann mir einer von Euch nochmal helfen?

    Gruß Jan

    Neu

    Den Hinweisen aus Post#2 bzgl 32-Bit/64-Bit bist Du nachgegangen?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Neu

    VaporiZed schrieb:

    Den Hinweisen aus Post#2 bzgl 32-Bit/64-Bit bist Du nachgegangen?


    Moin!

    ich dachte, dass wäre mit dem Tutorial nicht erforderlich.

    Ich wollte nun das ganze angehen und sehe, dass schon 32-bit bevorzugen aktuell ist.



    Was wäre denn die in #2 genannte Alternative??

    Ich habe mir das auch von Stackflow angesehen und den Key um "Wow6432Node" erweitert - aber ohne Erfolg.

    Gruß Jan

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „jan99“ ()

    Neu

    Wenn Du ein 64-Bit-System hast, musst Du genau diesen Haken rausnehmen. Und ggf. von Any-CPU auf 64-Bit stellen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.