微剋多資訊

 找回密碼
 註冊

Sign in with google

Google帳號登入

搜索

該用戶從未簽到

升級   12.5%

跳轉到指定樓層
主題
發表於 2015-4-20 16:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
身為一個IT網管,在管理網域架構下的環境下
難免會碰上總是有一些使用者要跑的軟體就是需要提升到系統管理員權限才能跑的程式
剛開始都是修改捷經改用RUNAS的方式去跑並記住密碼,碰到一個要修一個

後來就研究一下,找了不少腳本程式在研究
後面就使用了AUTOIT來開發
使用方式為用拖放檔案到這編譯好的exe上或是用批次檔的方式帶都可以
目前就還研究不出來如何用來跑網路磁碟機上的程式,這方面就想跟這裡的大大交流交流



以下是小弟弟我的腳本

#cs
更新日:20150409
autoit腳本程式 BY 張富騰(Futeng)
可用拖放方式或是批次檔帶參數方式使用
runas無法在網路磁碟上跑,只能在本機磁碟上發生作用
#ce

if $cmdline[1] = "" then ;檢查是否有拖放檔案進來
        msgbox (0,"Runas自動帶入密碼功能","請拖放要執行的檔案到此檔上方"&@CRLF&"或是使用批次檔後帶入參數方式") ;無指定安裝檔案會提示
        exit
EndIf
        $cmdchr = ($cmdline[1])
if StringMid($cmdchr,2,2) <> ":" Then ;判斷傳入方式,如果是用批次帶參數方式就得先變成完整路徑
        $cmdchr = (@WorkingDir &""& $cmdchr)
EndIf
        $err = msgbox (1,"Runas自動帶入密碼功能","請確定要執行的檔案,如不是請按取消" & @CRLF & "是否要執行:" & $cmdchr)
if $err = 2 then exit ;按取消就直接退出程式
if stringright($cmdline[1],4) = ".msi" Then ;判斷安裝的程式副檔名是msi的話要跑下一行增加msiexec.exe /i

                $cmdrunas = ("%windir%system32runas /profile /env /user:administrator " & chr(34) & " msiexec.exe /i " &  $cmdchr & chr(34)) ;runas指令,使用本機administrator帳號安裝
Else
                $cmdrunas = ("%windir%system32runas /profile /env /user:administrator " & chr(34) & $cmdchr & chr(34)) ;runas指令,使用本機administrator帳號安裝
EndIf
        run (@comspec & " /c " & $cmdrunas ) ;dos開窗執行 /c自動結束命令視窗,/k保留命令視窗
        ;msgbox (0,"dubug用,就看看字串有沒有傳錯","$cmdrunas=" & $cmdrunas & @CRLF & "$cmdline[1]=" & $cmdline[1] & @CRLF & "@workingdir=" & @workingdir);dubug用,看看字串哪邊有傳錯!
        winwaitactive("C:Windowssystem32cmd.exe");等待畫面
        winactive("C:Windowssystem32cmd.exe");等待畫面
        send("********{enter}");密碼
exit
樓主熱門主題

該用戶從未簽到

升級   50.5%

2F
發表於 2015-4-21 08:53 | 只看該作者
檔案路徑用 IP or 電腦名稱可以執行
※ administrator我沒開放也沒設密碼所以無效,但我用目前使用者可以
例如
  1. \\192.168.11.123\xxx.exe
複製代碼


網路磁碟機也是掛載的,只要找出是掛載哪裡的應該是可以

使用道具

該用戶從未簽到

升級   12.5%

3F
 樓主| 發表於 2015-4-21 09:20 | 只看該作者
本帖最後由 lightqsr 於 2015-4-21 09:31 編輯

這我試過了
U:\>runas /profile /env /user:her\administrator \\192.168.50.205\Resource\LineInst.exe
輸入 her\administrator 的密碼:
嘗試以使用者 "her\administrator" 的身分啟動 \\192.168.50.205\Resource\LineInst.exe ...
RUNAS ERROR: 無法執行 - \\192.168.50.205\Resource\LineInst.exe
267: 目錄名稱無效。

是有想過如果判斷出這程式在網路磁碟機上的話就先copy到暫存去再跑的方式
不過如果要跑的程式很大跟其它檔案都很多的話,麻煩了

使用道具

該用戶從未簽到

升級   50.5%

4F
發表於 2015-4-21 10:22 | 只看該作者
lightqsr 發表於 2015-4-21 09:20
這我試過了
U:\>runas /profile /env /user:her\administrator \\192.168.50.205\Resource\LineInst.exe
輸 ...

奇怪,我可以執行耶

  1. C:\Users\Yuan>runas /profile /env /user:Yuan \\192.168.11.22\Public\SOFTWARE\aut
  2. oruns.exe
  3. 輸入 Yuan 的密碼:
  4. 嘗試以使用者 "YANNI-010\Yuan" 的身分啟動 \\192.168.11.22\Public\SOFTWARE\autorun
  5. s.exe ...

  6. C:\Users\Yuan>

複製代碼
難道是 administrator 的問題?


測試結果是,這樣打不管哪個使用者都不會有管理員權限。

administrator 我沒設定密碼,所以目前無法測試 ><

使用道具

該用戶從未簽到

升級   12.5%

5F
 樓主| 發表於 2015-4-21 17:13 | 只看該作者
後來小弟我不知哪裡想通了
試成功runas跑在網路磁碟機的方式
就是不要在runas的指令中加上/env就好了......

就整個把我的腳本改字囉

#cs
更新日:20150421
autoit腳本程式 BY 張富騰(Futeng)
可用拖放方式或是批次檔帶參數方式使用
使用$cmdlineraw跟cmdline[1]拖放檔案帶入時是絕對路經顯示
                           批次帶入時是相對路經顯示
但如果路經與檔名中如有空格的話$cmdlineraw帶入時會前後自帶雙引號
#ce

If $cmdlineraw = "" Then;檢查是否有拖放檔案進來
        MsgBox (0,"Runas自動帶入密碼功能","請拖放要執行的檔案到此檔上方" & @CRLF & "或是使用批次檔後帶入參數方式");無指定安裝檔案會提示
        Exit
EndIf
        If stringleft($cmdlineraw,1) And StringRight($cmdlineraw,1) = Chr(34) Then;判斷如果傳入的字串前後都有雙引號的話,就先做移掉雙引號的處理
        $cmdlineraw =(StringTrimLeft($cmdlineraw,1))  ;刪掉左邊第一個雙引號
        $cmdlineraw =(StringTrimRight($cmdlineraw,1));刪掉右邊最後一個雙引號
        EndIf
        $cmdchr = ($cmdlineraw)
        $path1 = StringLeft(@WorkingDir,2);找出目前要執行的檔案的磁碟槽
        $netpath = DriveMapGet($path1);判斷是否為網路磁碟,並把路經字串傳入變數
        $useradmin = "/user:administrator ";預設使用本機administrator帳號
        $pwd = "********";本機administrator密碼
       
If StringLeft($netpath,2) = "\\" Then;判斷執行檔是否在網路磁碟機中
        $useradmin = "/user:her\administrator ";使用網域administrator帳號
        $pwd = "********";使用網域administrator密碼
        If StringMid($cmdchr,2,2) <> ":\" Then;判斷傳入方式,如果是用批次帶參數方式就得先變成完整路徑
        $cmdchr = ($netpath &"\"& $cmdchr);把網路磁碟機實際路經跟檔名結合成絕對路經
        Else
        $s1 = StringInStr ($cmdchr,"\",0,-1);使用拖放方式的絕對路經先判斷|從右邊數過來的位置
        $s2 = Stringmid ($cmdchr,$s1+1)     ;取出網路磁碟機執行的檔案的檔名
        $cmdchr = ($netpath &"\"& $s2)      ;把網路磁碟機實際路經跟檔名結合成絕對路經
        EndIf
       
ElseIf StringMid($cmdchr,2,2) <> ":\" Then;判斷傳入方式,如果是用批次帶參數方式就得先變成完整路徑
        $cmdchr = (@WorkingDir &"\"& $cmdchr);把路經跟檔名結合成絕對路經
EndIf

        $err = MsgBox (1,"Runas自動帶入密碼功能","請確定要執行的檔案,如不是請按取消" & @CRLF & "是否要執行:" & $cmdchr)
        If $err = 2 Then Exit;按取消就直接退出程式
       
If StringRight($cmdchr,4) = ".msi" Then;判斷安裝的程式副檔名是msi的話要跑下一行增加msiexec.exe /i
                $cmdrunas = ("%windir%\system32\runas /profile " & $useradmin & Chr(34) & " msiexec.exe /i " &  $cmdchr & Chr(34));runas指令組合
Else
                $cmdrunas = ("%windir%\system32\runas /profile " & $useradmin & Chr(34) & $cmdchr & Chr(34));runas指令組合
EndIf
       
        Run (@ComSpec & " /c " & $cmdrunas) ;dos開窗執行 /c自動結束命令視窗,/k保留命令視窗
        WinWaitActive("C:\Windows\system32\cmd.exe");等待畫面
        WinActive("C:\Windows\system32\cmd.exe");等待畫面
        Send($pwd);密碼
        Send("{ENTER}")
Exit

使用道具

該用戶從未簽到

升級   12.5%

6F
 樓主| 發表於 2015-4-30 09:50 | 只看該作者
相信有在比較有經驗的人
可以想到再以此延伸的方式可以改出寫死針對某些要安裝或是要跑某些程式可以改出只能跑特定程式的編譯引導EXE檔
這樣就可以省了不少事,至少有一些程式要更新不會被user摳來摳去的
只要電話中跟他說到哪個位置下去執行安裝或是程式啟動就好了!


使用道具

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

小黑屋|Archiver|微剋多資訊(MicroDuo)

GMT+8, 2024-4-20 02:49

Discuz! X

© 2009-2023 Microduo

快速回覆 返回頂部 返回列表