基 础 函 数 参 考


RunAs

使用不同的用户环境运行外部程序文件.

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

参 数

用户名 登录的用户名.
验证的域.
密码 用户的登录口令.
登录标志 0 - 不加载配置文件的交互式登录.
1 - 加载配置文件的交互式登录.
2 - 使用网络证书.
4 - 继承调用进程的环境, 而不是用户环境.
程序 运行程序的完整路径(文件类型: EXE, BAT, COM, 或 PIF, 见备注).
工作目录 [可选参数] 工作目录. 如果不指定, 则使用 @SystemDir. 这个路径不是程序的路径.
显示标志 [可选参数] 程序执行时的显示状态:
@SW_HIDE = 隐藏窗口 (或使用关键字 Default)
@SW_MINIMIZE = 最小化窗口
@SW_MAXIMIZE = 最大化窗口
选择标志 [可选参数] 控制父进程与子进程互动.
  0x1 ($STDIN_CHILD) = 提供句柄到子进程的 STDIN 流
  0x2 ($STDOUT_CHILD) = 提供句柄到子进程的 STDOUT 流
  0x4 ($STDERR_CHILD) = 提供句柄到子进程的 STDERR 流
  0x8 ($STDERR_MERGED) = 为 STDOUT 与 STDERR 提供相同的句柄. 也就是 $STDOUT_CHILD 与 $STDERR_CHILD 标志.
  0x10 ($STDIO_INHERIT_PARENT) = 提供子和父的 STDIO 流. 这个标志不能和任何其它 STDIO 标志结合. 当父层作为控制台应用被编译时, 这个标志非常有用.
  0x10000 ($RUN_CREATE_NEW_CONSOLE) = 子控制台进程应设立自己的窗口, 而不是使用父窗口.
当父层作为控制台应用被编译时, 这个标志非常有用.

返 回 值

成功: 返回运行程序的 PID(进程标识符).
失败: 返回 0, @error 被设置为非 0 值.

备 注

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

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

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

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

程序运行后脚本将继续执行后面的语句. 要暂停脚本的执行, 直到程序完成, 请使用 RunAsWait 函数代替.

提供 "StderrRead", "StdinWrite" 与 "StdoutRead" 函数的标准 I/O 参数与正确的特征值, 可以与子进程互动.
结合标志值(或使用 $STDERR_CHILD, $STDIN_CHILD & $STDOUT_CHILD, 由 Constants.au3 文件定义) 管理多个数据流.

使流关闭, 必须满足以下条件:
1) 子进程结束则关闭流(这种情况发生在子进程关闭时).
2) AutoIt 必须读出任何被捕获的流, 直到没有更多的数据存在.
3) 如果为子进程提供了 STDIN 流, 必须调用 StdinWrite() 关闭该流. 一旦检测到所有不再需要的流, 将自动释放所有内部资源.
StdioClose 可用于强制关闭 STDIO 流.

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

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

相 关 函 数

Run, RunWait, RunAsWait, ShellExecute, ShellExecuteWait, StderrRead, StdinWrite, StdoutRead, StdioClose, ProcessClose

函 数 示 例


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

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

provider with jb51.net (unicode)