使用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指定的一个别名。组成如..
CLSID 是windows系统对于不同的应用程序、文件类型、OLE对象、特殊文件夹以及各种系统组件分配的一个唯一表示它的代码,为Class ID的缩写。

通过代码

Set Obj = createobject("WScript.Shell") 

得到对象Obj,即Wshshell是一个对象。

0x04、VBS代码(以npcap.exe为例)

1.首先创建Wscript.Shell对象,调用对象的Run()方法运行npcap程序。

2.考虑重装的情况,输入Y确定重装,如图。

使用vbs脚本实现自动化安装GUI程序_第1张图片

3.一路回车操作,最后安装完成。

中间为了实现更好的效果,使用延时来控制回车按键,代码如下。

 

' D:\MyGit\vbs\demo.vbs

Set objShell = CreateObject("Wscript.Shell")
strCommandLine = "D:\MyGit\vbs\npcap-1.50.exe"
objShell.Run(strCommandLine)

Wscript.Sleep 1000
objShell.SendKeys "Y"

Wscript.Sleep 300
objShell.SendKeys "{ENTER}"

Wscript.Sleep 300
objShell.SendKeys "{ENTER}"

Wscript.Sleep 26000
objShell.SendKeys "{ENTER}"

Wscript.Sleep 300
objShell.SendKeys "{ENTER}"

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 30

exit

文件目录如下图。

使用vbs脚本实现自动化安装GUI程序_第2张图片

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

你可能感兴趣的:(tools,问题,脚本语言,vbscript,vbs)