基 础 函 数 参 考


RunAsWait

使用不同的用户环境运行外部程序,并暂停脚本执行,直到程序结束.

RunAsWait ( "用户名", "域", "密码", 登录, "程序" [, "工作目录" [, 显示 [, 选项 ]]] )

参 数

用户名 登录的用户名.
验证的域.
密码 用户的登录口令.
登录 0 - 不加载配置文件的交互式登录.
1 - 加载配置文件的交互式登录.
2 - 使用网络证书.
4 - 继承调用进程的环境, 而不是用户环境.
程序 运行程序的完整路径(文件类型: EXE, BAT, COM, 或 PIF, 见备注).
工作目录 [可选参数] 工作目录. 如果不指定, 则使用 @SystemDir.这个路径不是程序的路径.
显示 [可选参数] 程序执行时的显示状态:
  @SW_HIDE = 隐藏窗口 (或使用关键字 Default)
  @SW_MINIMIZE = 最小化窗口
  @SW_MAXIMIZE = 最大化窗口
选项 [可选参数] 控制父进程与子进程互动.
  0x10000 ($RUN_CREATE_NEW_CONSOLE) = 子控制台进程应设立自己的窗口, 而不是使用父窗口.
当父层作为控制台应用被编译时, 这个标志非常有用.

返 回 值

成功: 返回运行程序的退出代码.
失败: 返回 0, @error 设置为非 0 值.

备 注

如果路径包含空格,必须添加英文引号.

必须指定当前用户能够访问的工作目录, 否则函数将失败.

建议只加载需要的用户配置文件. 在内存允许的情况下, 配置文件可以停留在内存中.
如果使用 RunAs() 的脚本正好在运行在系统帐户中(例如, 脚本作为一个服务在运行中),
并且加载了用户的配置文件, 则你必须注意使脚本继续运行, 直到子进程关闭.

以管理员方式运行, 必须激活二次登录(RunAs)服务, 否则此函数将失败. 这并不适用于作为系统帐户运行.

执行指定程序后, 脚本会暂停, 直到该程序终止. 要运行程序后立即继续执行脚本, 则使用 RunAs 函数代替.

一些程序运行时会立即出现返回, 即使他们仍然在运行, 这些程序会产生另一个进程. 可以使用 ProcessWaitClose 函数来处理这些案例.

"加载配置文件"和"使用网络证书"选择是不兼容的. 同时使用会产生不确定的结果.

有一个 Windows XP 的防止 STDIO 重定向和显示标志的处理问题.
请参阅 Microsoft 知识库文章 KB818858, 详细了解受到影响的版本, 以及为解决问题的修补程序.
用户运行 Windows 2000, Windows XP SP2 及更高版本, 或 Windows Vista 不会受此影响.

相 关 函 数

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

函 数 示 例


; 填写适合您系统的用户名和密码.
Local $sUserName = "用户名"
Local $sPassword = "密码"

; 为另一个使用者运行命令提示符程序.
Local $pid = RunAsWait($sUserName, @ComputerName, $sPassword, 0, @ComSpec, @SystemDir)

; 等候进程关闭.
ProcessWaitClose($pid)

; 显示消息.
MsgBox(0, "", "正在等候进程关闭.")

provider with jb51.net (unicode)