REGREAD Problem - Key vorhanden ?

  • Hallo,

    ich habe mal wieder ein Problem.. ich möchte prüfen, ob ein bestimmter REGISTRY - Key vorhanden ist oder nicht...

    Ich dachte es würde mit folgendem Code funktionieren:

    Code
    Local $regvar = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\PSC\XXX\XYZ', '') - nur Beispiel Key 
    if $regvar ='' then 
    MsgBox(4096, "Testbox", "Der Reg-Key ist nicht vorhanden !!!") 
    else 
    MsgBox(4096, "Testbox", "Der Reg-Key:" & $regvar & "ist vorhanden") 
    endif


    Aber leider funktioniert es nicht wie gewünscht.. es kommt immer die Meldung...

    Der Reg -Key ist nicht vorhanden...

    Bitte um Hilfe.. Danke.

    Gruß AIT_Rookie

    Einmal editiert, zuletzt von AIT_Rookie (15. Oktober 2013 um 08:46)

    • Offizieller Beitrag

    RegRead geht wohl davon aus, dass der Key vorhanden ist. Beim weglassen des Wertes wird dann nicht auf Vorhandensein des Keys geprüft.
    Du kannst aber mit RegEnumVal testen ob es den Key gibt:

    [autoit]


    Local $regvar = RegEnumVal('HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip', 1); - nur Beispiel Key
    If $regvar = '' Then
    MsgBox(4096, "Testbox", "Der Reg-Key ist nicht vorhanden !!!")
    Else
    MsgBox(4096, "Testbox", "Der Reg-Key: '" & $regvar & "' ist vorhanden")
    EndIf

    [/autoit]
  • [autoit]


    Local $regvar = RegEnumVal('HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip', 1); - nur Beispiel Key
    If $regvar = '' Then
    MsgBox(4096, "Testbox", "Der Reg-Key ist nicht vorhanden !!!")
    Else
    MsgBox(4096, "Testbox", "Der Reg-Key: '" & $regvar & "' ist vorhanden")
    EndIf

    [/autoit]


    Unter Win7 x64 geht dieses Beispiel mit 7Zip nicht mehr..

    Auch nicht wenn der Registry-Key sowohl im 32 Bit
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\7-Zip
    und auch 64 Bit vorhanden ist
    HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip


    Wie kann ich abfragen dass dieser Key existiert? ;(

    Danke für eure Hilfe!

    Surfy

  • Mehrere Möglichkeiten kommen in Betracht:

    • Dein Programm ist ein x86-Programm und der Key steht nur in HKLM\SOFTWARE.
      Lösung: als Pfad HKLM64\SOFTWARE\7-Zip schreiben.
    • Dein Programm ist ein x64-Programm und der Key steht nur in HKLM\SOFTWARE\WOW6432Node.
      Lösung: als Pfad HKLM\SOFTWARE\WOW6432Node schreiben.
    • Der Schlüssel existiert hat aber keine Werte.
      Lösung: Statt If $regvar = '' Then folgendes schreiben: If @error > 0 Then
  • Dein Tip mit:

    Zitat

    Lösung: Statt If $regvar = '' Then folgendes schreiben: If @error > 0 Then

    Funktioniert bestens!

    Das Wochenende kann kommen :thumbup:

    Herzlichen Dank!!

    Surfy