Registry Dateien ausführen funktioniert nicht

  • Hallo an alle,


    wir haben hier ein kleines Problemchen mit unserem Logonscript und zwar soll im Ordner Reg nach den Registry Dateien gesucht werden und diese dann ausführen. Finden tut er Sie aber er führt sie nicht aus, bekomme aber auch keine Fehlermeldung.


    Vielleicht kann mir ja jemand dabei helfen


    [autoit]

    Func _REG()

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

    GUICtrlSetState($Progress1, $GUI_Show)

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

    GUICtrlSetState($Pic1, $GUI_HIDE)

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

    $i=0

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

    GUICtrlSetData($Label1,"Registrierung wird geschrieben...")

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

    $Search = FileFindFirstFile("\\server\NETLOGON\Reg\*.reg")

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

    If $Search = -1 then MsgBox(16,"","keine REG Dateien vorhanden!",2)

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

    While 1

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

    $REG = FileFindNextFile($Search)

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

    If @error Then ExitLoop

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

    $file = $File +1

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

    WEnd

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

    $Search = FileFindFirstFile("\\server\NETLOGON\Reg\*.reg")

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

    If $Search <> -1 then

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

    While 1

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

    $REG = FileFindNextFile($Search)

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

    If @error Then ExitLoop

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

    $i =$i+1

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

    MsgBox(0,"Files", $REG)

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

    RunasWait($Username,$Domain,$Password,"",@ComSpec & " /c " & $REG, "", @SW_HIDE)

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

    $P = ($i*100)/$File

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

    GUICtrlSetData($Progress1, $P)

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

    sleep(400)

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

    WEnd

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

    endIf

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

    EndFunc

    [/autoit]


    Die MsgBox ist nur für Testzwecke. Und ja ich kenne die Variante mit regedit.exe auch, allerdings funktioniert es da auch nicht!


    Vielen Dank im Voraus

    LG Susie

    Einmal editiert, zuletzt von Susie1703 (6. November 2012 um 11:58)

  • Probier es mal so:

    Spoiler anzeigen
    [autoit]

    Func _REG()
    GUICtrlSetState($Progress1, $GUI_Show)
    GUICtrlSetState($Pic1, $GUI_HIDE)
    $i=0
    GUICtrlSetData($Label1,"Registrierung wird geschrieben...")
    $Search = FileFindFirstFile("\\server\NETLOGON\Reg\*.reg")
    If $Search = -1 then MsgBox(16,"","keine REG Dateien vorhanden!",2)
    While 1
    $REG = FileFindNextFile($Search)
    If @error Then ExitLoop
    $file = $File +1
    WEnd

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

    $Search = FileFindFirstFile("\\server\NETLOGON\Reg\*.reg")
    If $Search <> -1 then
    While 1
    $REG = FileFindNextFile($Search)
    If @error Then ExitLoop
    $i =$i+1

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

    MsgBox(0,"Files", $REG)
    RunasWait($Username,$Domain,$Password,"",@ComSpec & " /c REG IMPORT" & $REG, "", @SW_HIDE)
    $P = ($i*100)/$File
    GUICtrlSetData($Progress1, $P)
    sleep(400)
    WEnd
    endIf
    EndFunc

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Danke für Deine schnelle Antwort, doch leider funktioniert das auch nicht.

    Das Problem ist dabei noch das mein Vorgänger das ganze Programmiert hat und ich ein voller noob mit AutoIT bin. Aber so wie es aussieht funktioniert die Funktion schon von Anfang an nicht und keiner hat es gemerkt.

    Da er die Registries nicht mal mit regedit.exe zusammenführt, gehe ich eigentlich davon aus das irgendetwas mit der Schleife nicht stimmt, aber laut MsgBox passt das.

    Vielleicht weiß ja noch jemand einen Lösungsansatz.

    LG Susie

  • Hi Greenhorn,

    in dem vierten Parameter kann ich rein schreiben was ich möchte, er führt macht das trotzdem nicht.

    Lg Susie

  • Wenn man Run aufruft und dies nicht klappt könnte man ja mal einfach den übergebenen String ausgeben lassen (Consolewrite, Msgbox) um zu überprüfen was an diesem Aufruf nicht stimmt.
    Unter Umständen würde man vielleicht sehen das z.B. ein Leerzeichen fehlt oder ähnliches... ;)

    Ansonsten lässt es sich für uns natürlich schlecht testen und nachvollziehen da diese Netzwerkkonfiguration hier ja nicht existiert.

  • Wenn man Run aufruft und dies nicht klappt könnte man ja mal einfach den übergebenen String ausgeben lassen (Consolewrite, Msgbox) um zu überprüfen was an diesem Aufruf nicht stimmt.
    Unter Umständen würde man vielleicht sehen das z.B. ein Leerzeichen fehlt oder ähnliches... ;)

    Ansonsten lässt es sich für uns natürlich schlecht testen und nachvollziehen da diese Netzwerkkonfiguration hier ja nicht existiert.

    Ich schliesse mich dem an. Hatte ein ähnliches Problem, welches durch die einfache Verwendung von MsgBox nicht ersichtlich wurde. Ich hatte dann den "idiotischen" Einfall, mal vor und hinter die in MsgBox ausgegebene Variable einen Doppelpunkt zu machen. (wäre in Deinem fall MsgBox(0,"File",":" & $Reg & ":"), und da sah ich, dass sich in meinen String, ausgelesen aus einer *.txt - Datei, ein @crlf (neueZeile-Enter) eingeschlichen hatte. Vielleicht liegt bei Dir was ähnliches vor. Habe mir dann mit "StringStripWS" und "StringStripCR" ausgeholfen, nützliche Funktion :-).

    Eine andere Möglichkeit könnte sein, dass dem User ggf. die Berechtigungen fehlen, um Reg-Keys in die Registry reinzuschreiben.

    Sonnige Grüsse aus der Schweiz (okay, es kübelt aus Bechern, aber egal)

    Floh

  • Habe nicht mehr an die Lösung gedacht. Deswegen der späte Nachtrag. Sorry!


    So funzt es jetzt... falls jemand auch dieses Problem haben sollte:


    [autoit]

    Func _REG()

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

    GUICtrlSetState($Progress1, $GUI_Show)

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

    GUICtrlSetState($Pic1, $GUI_HIDE)

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

    $i=0

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

    GUICtrlSetData($Label1,"Registrierung wird geschrieben...")

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

    $Search = FileFindFirstFile($Anmeldeserver & "Reg\*.reg")

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

    If $Search = -1 then MsgBox(16,"","keine REG Dateien vorhanden!",2)

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

    While 1

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

    $REG = FileFindNextFile($Search)

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

    If @error Then ExitLoop

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

    $file = $File +1

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

    WEnd

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

    $Search = FileFindFirstFile($Anmeldeserver & "REG\*.reg")

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

    If $Search <> -1 then

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

    While 1

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

    $REG = FileFindNextFile($Search)

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

    If @error Then ExitLoop

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

    $i =$i+1

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

    RunasWait($Username,$Domain,$Password,4,"cmd.exe /c reg import"&$Anmeldeserver&"reg\" & $REG, "", @SW_HIDE)

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

    $P = ($i*100)/$File

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

    GUICtrlSetData($Progress1, $P)

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

    sleep(400)

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

    WEnd

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

    endIf

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

    EndFunc

    [/autoit]