关于domain user用户执行admin权限安装-AutoIt(RunAs)

关于domain user用户执行admin权限安装-AutoIt(RunAs)网络


身边有同事、朋友,还有一些网友给我留言:关于domain user用户如何经过另外一个管理员权限用户来执行程序安装。。。。dom

暂无论须要安装的程序是什么,先不妨试试我写的一段测试用的脚本示例:ide

#cs
Au3 版本: v3.3.9.21 (Beta)
脚本做者:boyhong
技术介绍: http://boyhong.blog.51cto.com
#ce
#NoTrayIcon
;自行修改如下信息为你实际信息
Local $sUserName = "autosetupsoftware"
Local $sPassword = "abc123#"
Local $DOMAIN="tdomain.cn"
If IsAdmin() Then
Local $ADMIN="当前管理员权限运行"
Else
Local $ADMIN="当前非管理员权限运行"
EndIf
Local $pid = RunAs($sUserName, $DOMAIN, $sPassword, 0, @WindowsDir&"\regedit.exe")
;说明:若返回值为0,请确认:1:这个user的信息是否确认?2:当前是否保持了域网络链接.
MsgBox(262144+0,$ADMIN,"返回值:"&$pid)


固然:若测试想基于本地管理员组的话,只需修改:测试

#cs
Au3 版本: v3.3.9.21 (Beta)
脚本做者:boyhong
技术介绍: http://boyhong.blog.51cto.com
#ce
#NoTrayIcon
;自行修改如下信息为你实际信息
Local $sUserName = "autosetupsoftware"
Local $sPassword = "abc123#"
If IsAdmin() Then
Local $ADMIN="当前管理员权限运行"
Else
Local $ADMIN="当前非管理员权限运行"
EndIf
Local $pid = RunAs($sUserName, @ComputerName, $sPassword, 0,  @WindowsDir&"\regedit.exe")
;说明:若返回值为0,请确认:1:这个user的信息是否确认?2:当前是否保持了域网络链接.
MsgBox(262144+0,$ADMIN,"返回值:"&$pid)

请保证经过这个测试(经过测试的表现如以上脚本所示,返回值非0,而且打开注册表),而后的而后,就没有而后了。。。。。blog


那么,为何这么说呢?个人理解是:继承

1.若经过了这个测试,代表:$sUserName 指定的用户名及相关密码,域这几个基本信息填写正确,防有马大哈出现;进程

2.能够肯定经过domain user普通用户使用其它本地管理员组或者直接域管理员来运行任意程序。it

3.在此测试基础上修改为生产应用环境就易而反掌了。class


那么,在实际生产环境中,依然有一些程序安装使用如此方法不可行,那会有哪些可能呢?返回仔细看:登录

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

其中第四个参数:

0 - 不加载配置文件的交互式登陆.
1 - 加载配置文件的交互式登陆.
2 - 使用网络证书.
4 - 继承调用进程的环境, 而不是用户环境.

可能在一些实际生产环境中得使用加载配置文件的交互式登陆.

若你有更好的想法能够分享一下,在此感谢。

2014.4.5更新:

有朋友QQ问我如何运行自身呢?这样能够单一文件搞定...其实Autoit有个宏:@AutoItExe,示例代码以下:

#cs
    Au3 版本: v3.3.9.21 (Beta)
    脚本做者:boyhong
    技术介绍: http://boyhong.blog.51cto.com
#ce
;自行修改如下信息为你实际信息
Local $sUserName = "autosetupsoftware"
Local $sPassword = "abc123#"
Local $DOMAIN = "tdomain.cn"
If IsAdmin() Then
    Local $ADMIN = "当前管理员权限运行"
    Exit
Else
    Local $ADMIN = "当前非管理员权限运行"
    Local $pid = RunAs($sUserName, $DOMAIN, $sPassword, 0, @AutoItExe)
    ;说明:若返回值为0,请确认:1:这个user的信息是否确认?2:当前是否保持了域网络链接.
    MsgBox(262144 + 0, $ADMIN, "返回值:" & $pid)
EndIf
相关文章
相关标签/搜索