iT邦幫忙

1

Autoit 使用 runas 執行沒有反應

各位大師好
今天小弟想在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

還請神人大師們解答

小成 iT邦高手 10 級 ‧ 2017-05-04 10:28:59 檢舉
工作管理員有沒有 ccsetup.exe ?
bgu31059 iT邦新手 5 級 ‧ 2017-05-04 10:33:35 檢舉
小成哥 沒有耶 什麼都沒有出現 CPU使用率那些都沒變
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
阿漢
iT邦研究生 5 級 ‧ 2017-05-04 19:16:37
最佳解答

http://ithelp.ithome.com.tw/upload/images/20170504/20100265jalNlI8Amg.jpg

再轉存exe檔即可,記得要跟安裝檔放同一層目錄

看更多先前的回應...收起先前的回應...
bgu31059 iT邦新手 5 級 ‧ 2017-05-05 13:53:25 檢舉

謝謝大大的提供的思考點
我按照阿漢哥你給的語法+官方給的範例
終於成功了!!
不過又有個問題是
這樣別人把他想安裝的程式改名為ccsetup
是不是就能裝了= =?
有沒有什麼控管的方式

阿漢 iT邦研究生 5 級 ‧ 2017-05-05 16:04:45 檢舉

http://ithelp.ithome.com.tw/upload/images/20170505/20100265X4oy2p9voC.jpg

你點選Compile Script,會轉成exe檔
user電腦上不用裝Autoit軟體,僅執行exe檔即可

小成 iT邦高手 10 級 ‧ 2017-05-08 12:45:47 檢舉

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")
bgu31059 iT邦新手 5 級 ‧ 2017-05-08 17:06:45 檢舉

小成哥
請問要如何把要執行的程式包進來呢?

小成 iT邦高手 10 級 ‧ 2017-05-09 11:49:53 檢舉

上面給你範例了阿,真的只有這樣...,用FileInstall,
C:\source\file.exe 是我要包起來的程式,compile script 時,我本機上的程式的位置。
然後 @TempDir & "\xxx\ 就是 script 執行後,這個file.exe要存放的位置,我這邊是用暫存資料夾,
然後程式解出來了,就可以跑runas

bgu31059 iT邦新手 5 級 ‧ 2017-05-09 14:20:18 檢舉

小成哥 非常感謝您 已經圓滿解決了!!!
不過可以再請教一個問題嗎
放file.exe 這個暫存資料夾\xxx\ 安裝完後還會留在電腦裡嗎

小成 iT邦高手 10 級 ‧ 2017-05-10 15:53:53 檢舉

我記得是會留,不然就RunAsWait,看要不要再Sleep一下,然後再FileDelete

leekk iT邦新手 5 級 ‧ 2018-05-18 00:43:37 檢舉

小城哥您好,請問runas 在win10是否不能使用?因為在win7 可以執行的.exe 在win10 執行都沒反應

3

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
bgu31059 iT邦新手 5 級 ‧ 2017-05-04 16:41:45 檢舉

謝謝你的回答
bat檔單獨運行是可以
放在autoit裡面還是沒反應QQ

0
wwx
iT邦好手 1 級 ‧ 2017-05-05 08:50:22

我覺得是不是Autoit本身沒有用管理員權限執行所以才不行呢?
是否script先不用判斷是admin則用Run,而是一律使用RunAs,
然後使用admin身份跑Autoit是否RunAs就可以正確運作了?

也就是在Autoit並非用admin權限跑時(低權限)
想要RunAs切成admin權限(高權限)時是牴觸到控管行為了!

bgu31059 iT邦新手 5 級 ‧ 2017-05-05 13:50:46 檢舉

謝謝大大的提供的思考點
目前算解決了

我要發表回答

立即登入回答