Script unter anderem Benutzer ausführen

  • Hallo,
    ich möchte in einem Script mit REGREAD einen Variable eines Remote Rechners abfragen.
    Dazu muß das aber in einem andern Benutzerkontext laufen.

    Runas kann man ja für CMD Befehle benutzen.
    Soweit ich getestet habe, kann man aber keinen Autoitbefehl angeben.
    zumindest funktuioniert das bei mir nicht.

    Kann mir jemand helfen ?

    Beispiel:

    Code
    $server=InputBox("Server für WSUS","Bitte Computernamen angeben","")
    
    
    $WUServer	= RegRead("\\" & $server & "\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate","WUServer")
    
    
    MsgBox("0"," REGinfos von " & $server,"WSUS Server = " & $WUServer)

    Gruß
    Wolke

  • Verwende RunAs in dem Du mit diesem Befehl ein zweites Script aufrufst. Dieses läuft dann unter dem anderen Benutzerkontext.
    Die beiden Programme können Daten mithilfe des $STDIN_CHILD und $STDOUT_CHILD austauschen!

  • Verwende RunAs in dem Du mit diesem Befehl ein zweites Script aufrufst. Dieses läuft dann unter dem anderen Benutzerkontext.
    Die beiden Programme können Daten mithilfe des $STDIN_CHILD und $STDOUT_CHILD austauschen!

    Daran hatte ich auch schon gedacht.
    Das gefiel mir aber nicht so gut.

    Gibts keine Andere Lösung ? Vielleicht das Scriopt als Funktion definieren und die Funktion mit einem anderen Benutzer ausführen ?

    Gruß
    Wolke

  • Naja, Du kannst mit dem RunAs natürlich auch ein Dos Kommando abschicken.
    Also z.B. den Befehl Reg Query \\HKLM\Software\Microsoft.......

    Das Problem wird dann aber sein, dass Du ja den Wert von dem Schlüssel lesen möchtest..... Aber du bekommst nur die PID zurück...

  • Mit dem Programm kannst Du das auslesen.
    Aber damit Du auf fremden PCs überhaupt die Registry auslesen kannst muss die Remoteregistry aktiviert sein!

    [autoit]


    Local $Username = @UserName
    Local $Domain = @LogonDomain
    Local $PW = "XYZ"
    Local $RemotePC = "XYZ"
    Local $RegistryPath = "HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate"
    Local $RegistryKey = "WUServer"
    Local $Program = '"' & @ComSpec & '" /c Reg Query \\' & $RemotePC & "\" & $RegistryPath & " /v " & $RegistryKey

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

    Local $PID = RunAs($Username, $Domain, $PW, 0, $Program, @TempDir, @SW_HIDE, 0x2)
    Local $Return = ""
    While 1
    $Return &= StdoutRead($PID)
    If @error Then ExitLoop
    WEnd

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

    MsgBox(64, "Value", $Return)

    [/autoit]

    Gruss Veronesi