Functions > Process >


RunAsWait

Ex�cute un programme externe dans le contexte d'un utilisateur diff�rent et interrompt l'ex�cution du script jusqu'� ce que le programme se termine.

RunAsWait ( "username", "domain", "password", logon_flag, "program" [, "workingdir" [, show_flag [, opt_flag]]] )

Param�tres

username Le nom de l'utilisateur avec lequel se connecter.
domain Le domaine pour s'authentifier.
password Le mot de passe de l'utilisateur.
logon_flag     $RUN_LOGON_NOPROFILE (0) - Ouverture de session interactive avec aucun profil.
    $RUN_LOGON_PROFILE (1) - Ouverture de session interactive avec un profil.
    $RUN_LOGON_NETWORK (2) - Identification r�seau uniquement.
    $RUN_LOGON_INHERIT (4) - H�riter l'environnement du processus appelant � la place de l'environnement de l'utilisateur.

Les constantes sont d�finies dans "AutoItConstants.au3".
program Le chemin d'acc�s complet du programme (EXE, BAT, COM, ou PIF) � ex�cuter (Voir Remarques).
workingdir [optionnel] Le r�pertoire de travail. S'il n'est pas sp�cifi�, la valeur de SystemDir sera utilis�e. Ce n'est pas le chemin du programme.
show_flag [optionnel] Le flag "mode d'affichage" du programme ex�cut�:
    @SW_HIDE = Fen�tre cach�e (ou mot-cl� Default)
    @SW_MINIMIZE = Fen�tre r�duite
    @SW_MAXIMIZE = Fen�tre maximis�e
opt_flag [optionnel] Options diverses li�es � la fa�on dont les processus parent-enfant inter-agissent.
    $RUN_CREATE_NEW_CONSOLE (0x10000) = Le processus console enfant doit �tre cr�� avec sa propre fen�tre au lieu d'utiliser la fen�tre du parent. Ce flag n'est utile que lorsque le parent est compil� comme une application Console.

La constante est d�finie dans "AutoItConstants.au3".

Valeur de retour

Succ�s: Retourne le code de sortie du programme qui a �t� ex�cut�.
�chec: D�finit @error <> 0.

Remarques

Les chemins avec des espaces doivent �tre plac�s entre guillemets.

Il est important de sp�cifier un r�pertoire de travail accessible par l'utilisateur sur lequel vous ex�cutez le programme, sinon la fonction �chouera.

Il est recommand� que vous ne chargiez le profil de l'utilisateur que si vous �tes s�r que vous en avez besoin. Il y a une petite chance qu'un profil soit bloqu� en m�moire dans de bonnes conditions. Si un script qui ex�cute RunAs() arrive � �tre ex�cut� sous le compte SYSTEM (par exemple, si le script est ex�cut� en tant que service) et que le profil de l'utilisateur est charg�, vous devez veiller � ce que le script continue de s'ex�cuter jusqu'� ce que le processus enfant se termine.

Lors de l'ex�cution en tant qu'administrateur, le service de connexion secondaire (RunAs()) doit �tre activ� ou cette fonction �chouera. Ceci ne s'applique pas lors de l'ex�cution sous le compte SYSTEM.

Apr�s avoir lanc� le programme demand� le script se met en pause jusqu'� la fin du programme. Pour ex�cuter un programme puis continuer imm�diatement l'ex�cution de script, utiliser la fonction RunAs() � la place.

Certains programmes semble retourner imm�diatement, m�me s'ils sont encore en cours d'ex�cution; ces programmes engendrent un autre processus - vous devrez utiliser la fonction ProcessWaitClose() pour traiter ce cas.

Les options "charge un profil" et "informations r�seau seules" sont incompatibles. Les utiliser ensemble provoquera des r�sultats ind�finis.

Il y a un probl�me avec la g�n�ration des Windows XP qui emp�che la redirection STDIO et le drapeau "mode d'affichage" de fonctionner. Consultez l'article de la Base de connaissances Microsoft KB818858 pour plus d'informations sur les versions concern�es ainsi que d'un correctif pour ce probl�me. Les utilisateurs de Windows XP SP2 ou plus, ou Windows Vista ou plus ne sont pas concern�s.

En relation

ProcessWait, ProcessWaitClose, Run, RunAs, RunWait, ShellExecute, ShellExecuteWait

Exemple

#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIError.au3>

Example()

Func Example()
    ; Change le nom d'utilisateur et le mot de passe pour des valeurs appropri�es � votre syst�me.
    Local $sUserName = "Username"
    Local $sPassword = "Password"

    ; Lance le Bloc-notes et attend que le processus du Bloc-notes se ferme. Le Bloc-notes est ex�cut� sous l'utilisateur sp�cifi�.
    Local $iReturn = RunAsWait($sUserName, @ComputerName, $sPassword, $RUN_LOGON_NOPROFILE, "notepad.exe")

    If @error Then
        Local $sLastError = _WinAPI_GetLastErrorMessage()
        MsgBox($MB_SYSTEMMODAL + $MB_ICONERROR, "Erreur", "Notepad ne s'est pas ex�cut� :" & @CRLF & @CRLF & $sLastError)
    Else
        ; Affiche le code de retour du processus Notepad.
        MsgBox($MB_SYSTEMMODAL, "", "Le code de retour de Notepad �tait: " & $iReturn)
    EndIf
EndFunc   ;==>Example