Ex�cute un programme externe dans le contexte d'un utilisateur diff�rent.
RunAs ( "username", "domain", "password", logon_flag, "program" [, "workingdir" [, show_flag [, opt_flag]]] )
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. $STDIN_CHILD (0x1) = Fournit un handle pour le flux STDIN de l'enfant $STDOUT_CHILD (0x2)= Fournit un handle pour le flux STDOUT de l'enfant $STDERR_CHILD (0x4) = Fournit un handle pour le flux STDERR de l'enfant STDERR_MERGED (0x8) = Fournit le m�me handle pour STDOUT et STDERR. Implique � la fois $STDOUT_CHILD et $STDERR_CHILD. $STDIO_INHERIT_PARENT (0x10) = Fournit l'enfant avec les flux STDIO du parent. Ce flag ne peut pas �tre jumel� � un autre flag STDIO. Ce flag n'est utile que lorsque le parent est compil� comme une application Console. $RUN_CREATE_NEW_CONSOLE (0x10000) = Le processus de la console de l'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. Les constantes sont d�finies dans "AutoItConstants.au3". |
Succ�s: | Retourne le PID du processus qui a �t� lanc�. |
�chec: | Retourne 0 et d�finit @error <> 0. |
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� de charger le profil de l'utilisateur que si vous �tes s�r d'en avoir besoin. Il y a une petite chance qu'un profil soit bloqu� en m�moire pour de bonnes raisons. 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, l'ouverture de session secondaire (RunAs()) service doit �tre activ�e ou cette fonction �chouera. Ceci ne s'applique pas lors de l'ex�cution sous le compte SYSTEM.
Apr�s avoir ex�cut� le programme demand� le script continue. Pour mettre en pause l'ex�cution du script jusqu'� ce que le programme soit termin�, utilisez la fonction RunAsWait() � la place.
Fournir le param�tre Standard I/O avec les valeurs propres permet une interaction avec le processus de l'enfant � travers les fonctions StderrRead(), StdinWrite() et StdoutRead(). Combiner les valeurs des indicateurs (ou utiliser $STDERR_CHILD, $STDIN_CHILD & $STDOUT_CHILD, d�fini dans Constants.au3) pour g�rer plus d'un flux.
Pour les flux de fermeture, les conditions suivantes doivent �tre remplies:
1) Le processus enfant a ferm� la fin de son flux (ce qui arrive lorsque l'enfant ferme).
2) AutoIt doit lire tous les flux captur�s jusqu'� il n'y a pas plus de donn�es.
3) Si STDIN est fourni pour l'enfant, StdinWrite() doit �tre appel�e pour fermer le flux. Une fois que tous les flux sont d�tect�s comme n'�tant plus n�cessaires, toutes les ressources internes seront automatiquement lib�r�es.
StdioClose() force le flux STDIO � se fermer.
Les options "charger le profil" et "informations d'identification r�seau seules" sont incompatibles. Les utiliser ensemble provoquera des r�sultats ind�finis.
Il y a un probl�me dans la g�n�ration des Windows XP qui emp�che la redirection STDIO et le flag "mode d'affichage" de fonctionner. Consultez l'article de la la Base de connaissances Microsoft KB818858 pour plus d'informations sur quelles versions sont 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 affect�s.
ProcessClose, Run, RunAsWait, RunWait, ShellExecute, ShellExecuteWait, StderrRead, StdinWrite, StdioClose, StdoutRead
#include <AutoItConstants.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" ; Ex�cute le Bloc-notes avec la fen�tre agrandie. Le Bloc-notes est ex�cut� sous l'utilisateur sp�cifi�. Local $iPID = RunAs($sUserName, @ComputerName, $sPassword, $RUN_LOGON_NOPROFILE, "notepad.exe", "", @SW_SHOWMAXIMIZED) ; Attend 10 secondes pour que la fen�tre du bloc-notes apparaisse. WinWait("[CLASS:Notepad]", "", 10) ; Attend 2 secondes. Sleep(2000) ; Ferme le processus Notepad en utilisant le PID retourn� par RunAs. ProcessClose($iPID) EndFunc ;==>Example