前言
在域环境中我们总是会碰到账号权限限制,我们需要在普通账户下运行特权账号运行特定的命令程序来进行运维操作
RunAs函数
RunAs
使用不同的用户环境运行外部程序文件.
RunAs("用户名", "域", "密码", 注册标志, "程序"[, "工作目录"[, 显示标志[, 选项标志]]])
参 数
参 数 | 说 明 |
---|---|
用户名 | 工作的用户名. |
域 | 验证的域. |
密码 | 用户的密码. |
注册标志 | $RUN_LOGON_NOPROFILE (0) - 不加载配置文件的交互式登录. $RUN_LOGON_PROFILE (1) - 加载配置文件的交互式登录. $RUN_LOGON_NETWORK (2) - 使用网络凭据. $RUN_LOGON_INHERIT (4) - 继承调用进程的环境, 而不是用户环境. 常量定义文件: “AutoItConstants.au3”. |
程序 | 运行程序的完整路径(文件类型: EXE, BAT, COM, 或 PIF, 见备注). |
工作目录 | [可选] 工作目录. 如果不指定, 则使用 @SystemDir. 这个路径不是程序的路径. |
显示标志 | [可选] 程序执行时的显示状态: @SW_HIDE = 隐藏窗口 (或使用关键字 Default) @SW_MINIMIZE = 最小化窗口 @SW_MAXIMIZE = 最大化窗口 |
选择标志 | [可选] 控制父进程与子进程互动. $STDIN_CHILD (0x1) = 提供句柄到子进程的 STDIN 流 $STDOUT_CHILD (0x2) = 提供句柄到子进程的 STDOUT 流 $STDERR_CHILD (0x4) = 提供句柄到子进程的 STDERR 流 $STDERR_MERGED (0x8) = 为 STDOUT 与 STDERR 提供相同的句柄. 也就是 $STDOUT_CHILD 与 $STDERR_CHILD 标志. $STDIO_INHERIT_PARENT (0x10) = 提供子和父的 STDIO 流. 这个标志不能和任何其它 STDIO 标志结合. 当父层作为控制台应用被编译时, 这个标志非常有用. $RUN_CREATE_NEW_CONSOLE (0x10000) = 子控制台进程应设立自己的窗口, 而不是使用父窗口. 当父层作为控制台应用被编译时, 这个标志非常有用. 常量定义文件: AutoItConstants.au3 |
Autoit代码
我们可以这样写
Local $sUserName = "linuxitellu" ;定义管理员账号
Local $sPassword = "AaBbCc123" ;定义管理员密码
Local $Domain = "linuxitellu.com" ;定义AD域
; 在域环境中以管理员账号运行CMD
RunAs($sUserName, $domain, $sPassword, 0, "C:\Windows\system32\cmd.exe")
; 定位直至CMD窗口被激活
WinWaitActive("管理员: C:\Windows\system32\cmd.exe")
; 输入注册表启动命令
Send ("regedit")
; 延时1秒
Sleep(1000)
; 按回车键运行
Send ("{Enter}")
以上就是一个完整的实例,以管理员账号激活后定位到cmd窗口中输入启动注册表命令启动的一系列模拟动作
分号;
用来注释一整行代码