各位大師好
今天小弟想在AD環境下 利用Autoit讓其他沒有管理者權限的使用者也能安裝程式
例如:
帳號 admin
網域 test.com
密碼 password
要執行在D槽裡面叫ccsetup的exe檔
但是在使用RunAs這個語法的時候(用run就可以執行)
不管怎麼run script都沒有反應 連視窗都沒跳出來
爬過國外論壇 也試過下面幾種方法了 都是執行後沒反應
1.
RunAs ( "admin", "test.com", "password", 0, "D:\ccsetup.exe" )
RunAswait( "admin", "test.com", "password", 0, "D:\ccsetup.exe" )
RunAsSet("admin","test.com", "password", 0, "D:\ccsetup.exe")
If IsAdmin() Then
Run("ccsetup.exe")
Else
RunAsSet ("admin","test.com", "password")
Run("ccsetup.exe")
IsAdmin()
EndIf
還請神人大師們解答
再轉存exe檔即可,記得要跟安裝檔放同一層目錄
謝謝大大的提供的思考點
我按照阿漢哥你給的語法+官方給的範例
終於成功了!!
不過又有個問題是
這樣別人把他想安裝的程式改名為ccsetup
是不是就能裝了= =?
有沒有什麼控管的方式
你點選Compile Script,會轉成exe檔
user電腦上不用裝Autoit軟體,僅執行exe檔即可
to bgu31059
你的思路是正確的,
所以建議加上絕對路徑,而該路徑內的檔案,使用者是沒有權限可以修改的。
或者用另一個方式,把要執行的程式包進來,參考一下
Local $bFileInstall = True
if Not FileExists(@TempDir & "\xxx") Then
DirCreate(@TempDir & "\xxx")
EndIf
FileInstall("C:\source\file.exe", @TempDir & "\xxx\",1)
RunAs("username","domain","password",0, @TempDir & "\xxx\file.exe")
小成哥
請問要如何把要執行的程式包進來呢?
上面給你範例了阿,真的只有這樣...,用FileInstall,
C:\source\file.exe 是我要包起來的程式,compile script 時,我本機上的程式的位置。
然後 @TempDir & "\xxx\ 就是 script 執行後,這個file.exe要存放的位置,我這邊是用暫存資料夾,
然後程式解出來了,就可以跑runas
Windows UAC issue.
建一個 bath file 去開 exe file
再用 AutoIT runas 去call bat 檔即可
If IsAdmin() Then
Run("ccsetup.exe")
Else
RunAs ("admin","test.com", "password",0,"ccsetup.bat")
EndIf
我覺得是不是Autoit本身沒有用管理員權限執行所以才不行呢?
是否script先不用判斷是admin則用Run,而是一律使用RunAs,
然後使用admin身份跑Autoit是否RunAs就可以正確運作了?
也就是在Autoit並非用admin權限跑時(低權限)
想要RunAs切成admin權限(高權限)時是牴觸到控管行為了!