Windows巧用計划任務實現RunAs的功能


最近開發了一個應用,需要和其他人提供的腳本做接口。條件約束比較嚴:

  • 應用(下面簡稱APP)需要以SYSTEM啟動。
  • 腳本(下面簡稱SCRIPT)不能以SYSTEM啟動,而是以特定用戶(下面簡稱UserA)啟動。
  • 密碼要能自動輸入。

一、Runas

運行平台是Windows,第一下想到的是runas,參考了“runas命令的使用及RUNAS自動輸入密碼的方法”一文,做了以下試驗。

runas /user:UserA /savecred "script.bat"

第一次運行會提示輸入密碼,然后運行腳本,試驗成功。

再次運行runas(注意要加/savecred參數),發現不用再次輸入密碼。

重啟電腦后,再次試驗,仍然有效。

本以為就這么結束了,然而,用SYSTEM帳戶運行后發現,腳本會卡住。

經分析,SYSTEM帳戶與直接打開cmd運行是不一樣的,屬於不同的會話。因而SYSTEM下沒有保存過密碼,需要重新輸入。

方案一失敗。

 

二、 Sanur

使用參考中提到了Sanur,發現該項目早已不再維護,只支持Windows 2003/XP等早期版本。

在cmd下試驗就沒有成功。

 

三、lsrunase

該軟件在cmd下試驗成功(支持Windows 2008),但在SYSTEM下運行不正常,失敗。

雖然沒成功,但軟件還是有點用的,介紹使用步驟:

1. 使用LSencrypt界面程序將原始密碼(PwdA)加密為密文(PwdB)。

2. 在cmd下輸入以下命令

lsrunase /user:UserA /password:7F1z /command:script.bat /runpath:d:\ /domain:

 注意:

  • 所有選項都要加上(/user, /password, /command, /runpath, /domain)
  • /domain:后留空,表示本機默認域或工作組。
  • /password:7F1z,使用加密后的密文(PwdB),而非加密前的密文(PwdA)

四、cpau

該軟件Usage特別長,相當於一篇短篇小說了。。。具體用法略。

類似於lsrunase,在cmd下運行正常,在SYSTEM下運行失敗,報錯誤碼0xFFFFFFFB(-5)。

又失敗了。

 

五、計划任務

經過一晚上的糾結,終於想出了計划任務。

計划任務具有以下特點,能滿足本次需求:

  • 支持以特定用戶啟動。
  • 支持保存密碼。
  • 密碼以密文保存,而非明文。

經過試驗,可行!

實現結構如下(方括號內為程序、腳本或計划任務,圓括號內為運行用戶):

[APP](SYSTEM)-->[Script_intermediate](SYSTEM)-->script_task(UserA)-->SCRIPT(UserA)

加入Script_intermediate腳本,內容為

schtasks /Run /TN /I script_task

計划任務中,新建script_task,內容為調用SCRIPT,並以UserA用戶啟動。


 

歡迎拍磚。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM