Batch Script verhält sich anders, wenn es durch AutoIt gestartet wird

  • Hallo,

    ich habe folgendes Problem: Ich habe eine Batch Datei die die sogenannte WSUS Client ID zurücksetzt und erneuert. (Das Script benötigt man, wenn man ein Windows Image auf mehrere PCs aufspielt, damit diese dann eine einzigarte ID haben und der WSUS Server zwischen den Systemen unterscheiden kann.)


    Hier mal ganz kurz das Script dazu:

    Code
    call net stop wuauserv 
    call reg Delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientId /f  
    call reg Delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientIDValidation /f 
    call net start wuauserv 
    call wuauclt.exe /resetauthorization /detectnow
    pause


    Soweit funktioniert das auch, bis auf das "call wuauclt.exe /resetauthorization /detectnow", dort sagt er, dass er die Datei nicht findet. Komischerweise findet er die Datei nur nicht, wenn die .bat Datei über AutoIt gestartet wird, wenn ich das Batch Script von Hand ausführe klappt alles. Die Übergabe des vollständigen Pfads zur "wuauclt.exe" als auch ein Ausführen als Administrator ändert nichts. Die Datei sollte eigentlich in System32 zu finden sein. Wenn ich andere Anwendungen daraus starte über AutoIt und einer Batch wie z.B. Calc.exe, dann funktioniert es problemlos.

    Warum verhält sich das Ausführen durch AutoIt anders (insbesondere bei dieser wuauclt.exe), als wenn ich die Batch von Hand ausführe und wie behebe ich das Problem?

    So rufe ich die .bat auf:

    Code
    run( @ScriptDir & "\Tools\RebuildSusClientID.bat")

    Danke für die Hilfe

  • Ändert leider nichts. Er sagt weiterhin: "Der Befehl "wuauclt.exe" ist entweder falsch geschrieben oder konnte nicht gefunden werden."

    Selbst wenn ich

    Code
    call %WINDIR%\system32\wuauclt.exe /resetauthorization /detectnow

    über AutoIt ausführe, gehts nicht. Aber mit Doppelklick auf die Batch gehts


    Macht überhaupt keinen Sinn, ist bestimmt wieder so ein Windows 10 Sicherheitsding, damit Malware oder so, bestimmte Dinge nicht ausführen kann.

    2 Mal editiert, zuletzt von KloMeister (7. Juni 2021 um 15:26)

  • Mögliche Ursachen:

    - Windows FS Redirection: Dein Autoitscript ist 32bit und dadurch werden die Windows System Pfade auf die jeweiligen 32bit Pfade umgelenkt. In deinem Fall dann vermutlich "C:\Windows\SysWOW64" statt "C:\Windows\System32". Dort gibt es dann auch tatsächlich keine "wuauclt.exe"

    - Arbeitsverzeichnis falsch: Beim Run Aufruf kannst du explizit ein Arbeitsverzeichnis mitgeben. Sofern dein Script nicht auf C:\ ausgeführt wird kann auch das gelegentlich dazu führen, dass Standard Windows Befehle nicht richtig umgesetzt werden.

    Ich tippe auf Variante 1. Die einfachste Lösung wäre dein Script als 64bit Script zu kompilieren. Gibt dafür aber auch andere Lösungen, die die Windows FS Redirection temporär für dein Script abschalten oder du verwendest den "sysnative" Pfad.

    Details siehe hier:

    Vorhandene! bcdedit.exe kann NiCHT vom Script ausgeführt werden weil es diese exe nicht findet

    http://www.samlogic.net/articles/sysna…bit-windows.htm

    https://www.autoitscript.com/autoit3/docs/l…Redirection.htm

    2 Mal editiert, zuletzt von misterspeed (7. Juni 2021 um 21:04)