使用vbs脚本实现自动化安装GUI程序
目錄
使用vbs腳本實現自動化安裝GUI程序
0x00、需求、場景是什么?
1、緣由
2、需求
0x01、方案
1、使用腳本精靈、按鍵精靈
2、借助WinSpy++
3、使用C++代碼操作
4、使用VBS腳本
0x02、VBS是什么?
1、Visual Basic
2、Basic語言
3、Visual Basic Script
0x03、Wscript.shell是什么?
0x04、VBS代碼(以npcap.exe為例)
0x05、自定義模式安裝
0x06、例子文件目錄
0x07、效果動圖
0x08、參考文獻:
0x00、需求、場景是什么?
1、緣由
前段時間博主寫了一篇關于網卡驅動的筆記,有小伙伴留言相關依賴的安裝問題。恰好博主也想試試看,于是有了現在的解決方案。
?[windows下無npcap驅動導致golang獲取網卡失敗問題_kjcxmx的博客-CSDN博客](https://blog.csdn.net/kjcxmx/article/details/118353189)?
2、需求
windows下某些軟件的安裝是提供自定義安裝的GUI圖形界面模式,但是某些場景下并不想手動干預。就是想要所謂的靜默安裝方式,但某些軟件一定條件下不支持靜默安裝模式。
0x01、方案
總體想法是使用腳本自動化控制,來模擬人機交互的過程來實現一鍵安裝。
1、使用腳本精靈、按鍵精靈
網上好多介紹,主要是提供模擬點擊鼠標時間、重放按鍵事件,通過記錄點陣坐標來實現點擊操作。
不過由于是通過坐標實現的,弊端也很明顯,不適合移植到其他設備進行操作。只要分辨率稍微不一致就可能導致自動化執行失敗。
另外某些款還需要安裝驅動,這就會產生”雞生蛋,蛋生雞“的問題。
2、借助WinSpy++
使用WinSpy++獲取窗體對象,使用默認的安裝策略一路回車,實現默認一鍵安裝。
WinSpy++來自于VC++,是一款可以獲取程序各種句柄的工具,比如窗體的標題、按鈕、輸入框、進度條等等句柄。可以對獲取到的句柄發消息,實現后臺掛機。WinSpy涉及了不少windows api提供調用,這里暫不細說。
詳情可查看網友的這篇博客,講的比較詳細。 [Spy++的使用方法_smeller的專欄-CSDN博客_spy++](https://blog.csdn.net/smeller/article/details/42839841)?
3、使用C++代碼操作
C++比較適合,一些程序的安裝過程都是使用C++來操作。主要是調用 kernel32 句柄來獲取程序PID、句柄, 過程類似,都是模擬交互過程,最后打包成exe可執行文件。
4、使用VBS腳本
通過VBS腳本創建可供在windows上運行的程序調用的對象,使用WScript.Shell對象進行SendKeys()操作,可以實現默認策略一鍵安裝,也可進行自定義策略自動安裝。
著重介紹此方法,不復雜,易用性好。
0x02、VBS是什么?
說到VBS就不得不提VB,什么是VB呢?
1、Visual Basic
VB是Visual Basic的簡稱,是Microsoft公司開發的一種通用的基于對象的程序設計語言,為結構化的、模塊化的、面向對象的、包含協助開發環境的事件驅動為機制的可視化程序設計語言,是一種可用于微軟自家產品開發的語言。
2、Basic語言
而VB呢又源自于BASIC編程語言,是不是有種套娃的感覺,其實也沒有了,只是技術的發展就是這樣一步一步的過程,從原有的技術層面上建立新的技術,層層迭代。
3、Visual Basic Script
言歸正傳,VBS是基于Visual Basic的腳本語言。VBS的全稱是:Microsoft Visual Basic Script Edition。([微軟公司](https://baike.baidu.com/item/微軟公司/732128)可視化BASIC腳本版),其語言類似Visual Basic(VB),用于高效生成類型安全和面向對象的應用程序,程序員可以輕松的使用VB提供的組件快速建立一個應用程序。?
VBS是默認的ASP語言,可以用在Windows腳本編寫和網頁編碼中。盡管它的語法類似于VB,但是它卻是一種完全不同的語言。VBS 不使用 VB運行庫運行而是由Windows腳本主機解釋執行。
0x03、Wscript.shell是什么?
Wscript.shell是Wshshell的ProID
Wshshell是一個對象,存放在windows系統中的wshom.ocx文件中,可供在windows上運行的程序調用,他可對windows的外殼程序進行訪問。
對象(object)是一些相關變量和方法的軟件集或者說庫。當你需要這個對象里面的變量、方法、功能的時候,你就可以使用相關語言(代碼)來調用。
ProID 是程序員給某個CLSID指定的一個別名。組成如<Program>.<Componet>.<version>
CLSID 是windows系統對于不同的應用程序、文件類型、OLE對象、特殊文件夾以及各種系統組件分配的一個唯一表示它的代碼,為Class ID的縮寫。
通過代碼
Set Obj = createobject("WScript.Shell")?得到對象Obj,即Wshshell是一個對象。
0x04、VBS代碼(以npcap.exe為例)
1.首先創建Wscript.Shell對象,調用對象的Run()方法運行npcap程序。
2.考慮重裝的情況,輸入Y確定重裝,如圖。
3.一路回車操作,最后安裝完成。
中間為了實現更好的效果,使用延時來控制回車按鍵,代碼如下。
?
0x05、自定義模式安裝
Wscript.Shell對象提供了SendKeys()函數,可以通過鍵盤操作來實現自定義,從而避免了通過獲取坐標實現模擬操作,提高了準確性。
比如使用[TAB]鍵實現選擇功能,[ENTER]按鍵實現確定功能,[左、右、上、下]分別對應"{LEFT}"、"{RIGHT}"、"{UP}"、"{DOWN}"
其他的, Shift -->"+"、alt-->"%"、ctrl-->"^"
0x06、例子文件目錄
由于需要管理員權限運行,避免同意管理員權限運行彈窗,使用bat批處理包一層,右鍵管理員運行bat文件,實現一鍵運行。
bat代碼如下
:: D:\MyGit\vbs\run.bat @echo off@title install npcap program@start D:\MyGit\vbs\demo.vbs@echo. @echo installing... @echo please don't touch it.@timeout /T 30exit文件目錄如下圖。
0x07、效果動圖
?
0x08、參考文獻:?
vbs(腳本語言)
https://baike.baidu.com/item/VBS/1700748#2
Visual Basic(程序設計語言)
https://baike.baidu.com/item/Visual%20Basic/287852
Spy++的使用方法_smeller的專欄-CSDN博客_spy++
https://blog.csdn.net/smeller/article/details/42839841
Wscript.shell 詳解
https://blog.csdn.net/yainyiyi123/article/details/41909289
總結
以上是生活随笔為你收集整理的使用vbs脚本实现自动化安装GUI程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VBS脚本基本
- 下一篇: LVS的DR模式(ldirectord的