Startet ein externes Programm im Kontext eines anderen Benutzers und pausiert das Skript, bis das Programm beendet wurde.
RunAsWait ( "username", "domain", "password", logon_flag, "program" [, "workingdir" [, show_flag [, opt_flag ]]] )
Parameter
| username | Benutzername, mit dem eingeloggt wird. |
| domain | Domäne, gegenüber der man sich authentifiziert. |
| password | Passwort des Benutzers. |
| logon_flag | 0 - Interaktives Logon ohne Profil. 1 - Interaktives Logon mit Profil. 2 - Nur Netzwerk-Authentifizierung. 4 - Übernehme die Umgebung des aufrufenden Prozesses statt der des Benutzers. |
| program | Name der ausführbaren Datei (EXE, BAT, COM oder PIF), die gestartet werden soll. |
| workingdir | [optional] Arbeitsverzeichnis. Wenn nicht angegeben, wird @SystemDir verwendet. Dies ist nicht der Pfad des Programms. |
| show_flag | [optional] Legt die Sichtbarkeit des ausgeführten Programms fest: @SW_HIDE = Verstecktes Fenster (benutzt alternativ das Schlüsselwort Default). @SW_MINIMIZE = Minimiertes Fenster. @SW_MAXIMIZE = Maximiertes Fenster. |
| opt_flag | [optional] Steuert die Interaktion zwischen Parent- und Child-Prozess. 0x10000 ($RUN_CREATE_NEW_CONSOLE) = Der Child-Kommandozeilenprozess wird in einem eigenen Kommandozeilenfenster ausgeführt. Dieses Flag ist nur dann sinnvoll, wenn die Parent-Anwendung als Kommandozeilenapplikation kompiliert wurde. |
Rückgabewert
| Erfolg: | Gibt den Exit-Code des beendeten Programms zurück. |
| Fehler: | Gibt 0 zurück und setzt @error auf ungleich Null. |
Bemerkungen
Pfade mit Leerzeichen müssen in Anführungszeichen gesetzt werden.
Verwandte Funktionen
ProcessWait, ProcessWaitClose, Run, RunWait, ShellExecute, ShellExecuteWait, RunAs
Beispiel
; Trage Benutzername und Passwort ein, die deinem System entsprechen.
Local $sUserName = "Benutzername"
Local $sPassword = "Passwort"
; Startet die Kommandozeile als der oben angegebene Benutzer.
Local $pid = RunAsWait($sUserName, @ComputerName, $sPassword, 0, @ComSpec, @SystemDir)
; Wartet, bis der gestartete Prozess beendet wurde.
ProcessWaitClose($pid)
; Zeige eine Info an.
MsgBox(64, "", "Der Prozess, auf den wir gewartet hatten, wurde beendet.")