RunAsWait
使用不同的用户环境运行外部程序,并暂停脚本执行,直到程序结束.
RunAsWait ( "username", "domain", "password", logon_flag, "program" [, "workingdir" [, show_flag [, opt_flag]]] )
参数
username
|
登录的用户名.
|
domain
|
验证的域.
|
password
|
用户的登录口令.
|
logon_flag
|
$RUN_LOGON_NOPROFILE (0) - 不加载配置文件的交互式登录.
$RUN_LOGON_PROFILE (1) - 加载配置文件的交互式登录.
$RUN_LOGON_NETWORK (2) - 使用网络证书.
$RUN_LOGON_INHERIT (4) - 继承调用进程的环境, 而不是用户环境.
常量定义在 "AutoItConstants.au3"
|
program
|
运行程序的完整路径(文件类型: EXE, BAT, COM, 或 PIF, 见备注).
|
workingdir
|
[可选] 工作目录. 如果不指定, 则使用 @SystemDir.这个路径不是程序的路径.
|
show_flag
|
[可选] 程序执行时的显示状态:
@SW_HIDE = 隐藏窗口 (或使用关键字 Default)
@SW_MINIMIZE = 最小化窗口
@SW_MAXIMIZE = 最大化窗口
|
opt_flag
|
[可选] 控制父进程与子进程互动.
$RUN_CREATE_NEW_CONSOLE (0x10000) = 子控制台进程应设立自己的窗口, 而不是使用父窗口. 当父层作为控制台应用被编译时, 这个标志非常有用.
常量定义在 "AutoItConstants.au3"
|
返回值
成功:
|
返回运行程序的退出代码.
|
失败:
|
@error 设置 为非 0 值.
|
备注
如果路径包含空格,必须添加英文引号.
必须指定当前用户能够访问的工作目录, 否则函数将失败.
建议只加载需要的用户配置文件. 在内存允许的情况下, 配置文件可以停留在内存中.
如果使用 RunAs() 的脚本正好在运行在系统帐户中(例如, 脚本作为一个服务在运行中),
并且加载了用户的配置文件, 则你必须注意使脚本继续运行, 直到子进程关闭.
以管理员方式运行, 必须激活二次登录( RunAs() )服务, 否则此函数将失败. 这并不适用于作为系统帐户运行.
执行指定程序后, 脚本会暂停, 直到该程序终止. 要运行程序后立即继续执行脚本, 则使用 RunAs() 函数代替.
一些程序运行时会立即出现返回, 即使他们仍然在运行, 这些程序会产生另一个进程. 可以使用 ProcessWaitClose() 函数来处理这些案例.
"加载配置文件"和"使用网络证书"选择是不兼容的. 同时使用会产生不确定的结果.
在 Windows XP 系统有一个防止工作顺序重定向和工作标志的问题. 请参阅 Microsoft 知识库文章 KB818858, 详细了解受到影响的版本, 以及为解决问题的修补程序.
用户运行 Windows XP SP2 及更高版本, 或 Windows Vista 或更高版本 不会受此影响.
函数示例
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
; Change the username and password to the appropriate values for your system.
Local $sUserName = "Username"
Local $sPassword = "Password"
; Run Notepad and wait for the Notepad process to close. Notepad is run under the user previously specified.
Local $iReturn = RunAsWait($sUserName, @ComputerName, $sPassword, $RUN_LOGON_NOPROFILE, "notepad.exe")
; Display the return code of the Notepad process.
MsgBox($MB_SYSTEMMODAL, "", "The return code from Notepad was: " & $iReturn)
EndFunc ;==>Example
----------------------------------------
该函数可以通过命令调用 exect
参见:
ProcessWait, ProcessWaitClose, Run, RunWait, ShellExecute, ShellExecuteWait, RunAs
exect=RunAsWait('Username',@ComputerName,'Password',0,'notepad.exe','',@SW_SHOWMAXIMIZED) ;; 启动"记事本",代表上述用户全屏部署,并暂停手机的工作,直到关闭
© Аверин Андрей для Total Commander Image Averin-And@yandex.ru
|