RegRead und Platzhalter (Sternchen)

  • Hi zusammen,

    möchte ein Wert aus der Registry auslesen und dann vergleichen. Dazu möchte ich wenn möglich einen Platzhalter verwenden.

    [autoit]


    Global $prog_home = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\prog', '')&'\'
    Global $mysql_home = RegRead('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL', 'ImagePath')

    [/autoit][autoit][/autoit][autoit]

    If $mysql_home = $prog_home&'mysql\bin\mysqld-nt' Then
    Global $mysql3_home = $prog_home&'mysql\'
    Global $mysql_ver = 3
    Else
    MsgBox(0,'','nicht erkannt')
    EndIf

    [/autoit]

    Das Problem ist, dass "mysqld-nt" (in der If Abfrage) unterschiedlich sein kann. Manchmal "mysqld-nt" oder "mysqld-nt.exe" oder "mysqld-max-nt" oder "mysqld-max-nt.exe"

    Ich möchte sowas in der Art versuchen (also mit *), geht aber leider nicht:

    [autoit]

    If $mysql_home = $prog_home&'mysql\bin\mysqld*' Then

    [/autoit]

    Habt Ihr eine Idee wie ich es lösen könnte?

    Danke und Gruß
    Herra

  • Hi peethebee,

    danke für die prompte Antwort. :thumbup:

    Mit StringLeft kriege ich es nicht, da ich nie weiß, wie viele Zeichen ich abzählen muss.
    StringRegExp ist eine gute Idee, funktioniert aber irgendwie nicht. Kann jemand mal schauen, wo ich einen Fehler mache?

    Wenn ich die Variable $prog_home in der IF Abfrage weglasse, dann klappt es. Ich möchte aber alles abprüfen. Darf man an der Stelle keine Variablen als Suchmuster angeben?

    [autoit]


    Global $prog_home = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\prog', '')&'\'
    Global $mysql_home = RegRead('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL', 'ImagePath')

    [/autoit][autoit][/autoit][autoit]

    If StringRegExp($mysql_home,$prog_home&'mysql\bin\mysqld-') Then
    Global $mysql3_home = $prog_home&'mysql\'
    Global $mysql_ver = 3
    Else
    MsgBox(0,'','nicht erkannt')
    EndIf

    [/autoit]

    Danke und Gruß
    Herra

    • Offizieller Beitrag

    Wildcard nicht, aber du kannst ja prüfen ob einer der Schlüssel in dem Zweig 'mysqld-' enthält:

    [autoit]

    Global $prog_home = ''
    For $i= 1 to 100
    $var = RegEnumKey("HKLM\SOFTWARE\prog\mysql\bin", $i)
    If @error <> 0 then ExitLoop
    If StringInStr($var, 'mysqld-') Then
    $prog_home = RegRead('HKLM\SOFTWARE\prog\mysql\bin\' & $var, '') & '\'
    ExitLoop
    EndIf
    Next
    If $prog_home = '' Then Exit MsgBox(0, 'Fehler', 'Programmeintrag nicht vorhanden!')

    [/autoit]