關於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
相關文章
相關標籤/搜索