關於domain user用戶執行admin權限安裝-AutoIt(RunAs)

關於domain user用戶執行admin權限安裝-AutoIt(RunAs)


身邊有同事、朋友,還有一些網友給我留言:關於domain user用戶如何通過另一個管理員權限用戶來執行程序安裝。。。。

暫不管需要安裝的程序是什麼,先不妨試試我寫的一段測試用的腳本示例:

#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,並且打開註冊表),然後的然後,就沒有然後了。。。。。


那麼,爲什麼這麼說呢?我的理解是:

1.若通過了這個測試,表明:$sUserName 指定的用戶名及相關密碼,域這幾個基本信息填寫正確,防有馬大哈出現;

2.可以確定通過domain user普通用戶使用其它本地管理員組或者直接域管理員來運行任意程序。

3.在此測試基礎上修改成生產應用環境就易而反掌了。


那麼,在實際生產環境中,依然有一些程序安裝使用如此方法不可行,那會有哪些可能呢?返回仔細看:

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章