Vbs脚本执行不同版本的Office激活任务(MAK激活)

我们都知道微软部分产品可以使用不同的激活方式,对于企业内部的用户来说,会针对Office和windows os部署对应的kms服务进行激活,但是对于但是对于企业外部的用户来说,一般使用mak的激活方式,MAK的key是有数量限制的,用一个会少一个,所以我们建议少用,当然有人会说,将kms服务器的1688发布到外网不就可以对于外部的用户使用了么,这么敏感的信息发布到外网肯定不好,所以一般会使用Mak激活方式,使用mak的话,我们不能给用户远程来输入key,所以只能通过对应的vbs程序让用户自己执行。但是如果给用户的话,我们就无法控制,如果对激活程序不做特殊限制的话,那样就容易造成信息遗漏给企业造成不必要的损失,所以我们就定义激活程序绑定功能;在激活脚本中定义用户的mac地址,只要mac地址匹配了才能执行该对应的激活流程。需要注意的是我们首先需要从客户手里获取需要激活服务的机器Mac地址,然后在激活程序中定义该Mac地址才能执行后续代码的执行任务,匹配mac地址后,再获取用户office版本及安装路径,最后执行相关的office版本的mak key导入及激活流程。最后我们需要说明一下,因为用vbs脚本定义的激活程序,最后需要发送给用户自行执行,所以我们为了信息外漏,需要使用vbs2exe工具将激活程序转换格式为exe,这样用户就无法查看里面的相关信息了。具体见下:

一、首先是脚本分析:

如果对于office来说,我们都知道,目前使用最多的是office2010和office2013,而且在安装不同的系统版本的路径也是不一样的,所以我们为了保证能够执行成功;我们需要定义一个函数变量来判断office的安装路径及版本

因为我们安装的是office2013版本,所以获取到的版本号为15.0

如果是office2010版本,获取的版本号为14.0

代码:

SET wordApp=CreateObject("Word.Application.8")
msgbox wordApp.Version
msgbox wordApp.Path

我们代码获取office的版本及路径

然后同时获取到的office安装路径

然后我们定义需要对指定的mac地址做激活,所以我们也同样需要定义一个函数变量,来获取本地的mac地址

Set mc = GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
For Each mo In mc
If mo.IPEnabled = True Then
‘TracePrint "本机网卡MAC地址是: " & mo.MacAddress
GetMAC = mo.MacAddress
Exit For
End If
Next
msgbox getmac

执行代码

准备好前面两步就基本上好了,接下来我们只需要将两个函数变量整合判断;

将获取到的mac地址跟vbs脚本中指定的代码进行匹配,然后通过获取到的office版本及路径来判断执行mak key的导入及激活;

注:第一行GetMAC() <> "MAC Address" 的话就是不等于的意思,任何机器都可以执行激活

如果将<>修改为=(等号)就是匹配的意思,只要MAC地址等于获取的MAC才能激活

if GetMAC() = "44:37-e6:20-f8:03" Then
SET Wshell=CreateObject("Wscript.Shell")
SET wordApp=CreateObject("Word.Application.8")
msgbox "mac address:" & GetMAC() & Chr(13) & "office version:" & wordApp.Version & Chr(13) & "office setup path:" & wordApp.Path
if wordApp.Version = "14.0" then
msgbox "cscript """ & wordApp.Path & "\ospp.vbs"" /inpkey: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx "
Wshell.Run "cscript """ & wordApp.Path & "\ospp.vbs"" /inpkey: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx",0,True
Wshell.Run "cscript """ & wordApp.Path & "\ospp.vbs"" /act"
else
msgbox "cscript """ & wordApp.Path & "\ospp.vbs"" /inpkey: xxxxx-xxxxx-xxxx-xxxxx-xxxxx "
Wshell.Run "cscript """ & wordApp.Path & "\ospp.vbs"" /inpkey:xxxxx-xxxxx-xxxxx-xxxxx-xxxxx",0,True
Wshell.Run "cscript """ & wordApp.Path & "\ospp.vbs"" /act"
end if
msgbox "Active Success"
Else
msgbox "Active Failed"
End If
Function GetMAC()
GetMAC = ""
Dim mc,mo
Set mc = GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
For Each mo In mc
If mo.IPEnabled = True Then
‘TracePrint "本机网卡MAC地址是: " & mo.MacAddress
GetMAC = mo.MacAddress
Exit For
End If
Next
Set mc = nothing
End Function

接下来我们测试以下代码运行结果:

我们再次使用的是office2013的进行测试

单击确认执行下一步;开始导入mak key

Active Success

查看office状态

最后我们同事提到了一个问题说如果用户没有看见提示信息的话,会一直点,这样会给用户造成代码没有执行的假象,所以想在后行后给用户一个提示,所以再次修改代码

注:因为我们最终发送给用户的话会将一些Msgbox的信息注释,所以用户最后只会看见一个执行成功的显示;

CreateObject("Wscript.Shell").Popup "三秒钟关闭", 3, "MsgBox", 64

根据以上显示我们就可以替换需要显示的内容及自动退出的时间

待3秒提示完成后自动继续向下执行

继续完成Active的任务

我们最后再说一下,为了保险起见将vbs脚本通过工具转换成exe,这样就大大提高了安全

运行程序,运行打开---选择需要编译的vbs文件

打开vbs文件后,单机项目---编译

提示保存路径及格式默认为exe

保存后执行也正常

如果需要vbs2exe的转换工具需要下载附件,将扩展名从txt修改为7.z压缩模式,然后解压即可

时间: 2024-10-05 02:40:21

Vbs脚本执行不同版本的Office激活任务(MAK激活)的相关文章

Vbs脚本执行不同版本的Windows OS激活任务(MAK&KMS激活)

Vbs脚本执行不同版本的Windows OS激活任务(MAK&KMS激活) 我们前面几面都介绍了关于vbs脚本程序来完成一些半自动化的任务,今天我们介绍一下,Vbs脚本执行不同版本的Windows OS激活任务(MAK&KMS激活)的功能介绍,其实不管通过vbs实现什么样的功能,我们还是需要屡清思路来完成相关逻辑程序的编写及运行.我们今天既然要使用vbs脚本来完成不同版本的激活任务,而且不同版本的OS也有不同的MAK Key,所以我们需要通过获取系统的版本来完成对应的OS激活任务.同样,我

Vbs脚本简单使用

概述 之前在做项目时用到了一点vbs脚本,记录下. C++程序调用vbs脚本 1 System(vbs路径 参数); //空格隔开 Vbs脚本 1 '''''Vbs脚本解析参数 2 Set objArgs = Wscript.Arguments 3 if objArgs.Count>0 Then 4 msgbox objArgs(0) 5 end if 6 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''注释符号 7 fo

Vbs脚本实现数据CUT备份及自动轮询删除备份数据

我们上一篇文章中介绍了使用vbs脚本不同版本的office激活任务,其实说到vbs脚本相信大家都很了解了,有什么作用呢,其实说白了就是执行批处理任务的工具.Vbs在windows上应用相对比较多,其功能上我们就不多说了,今天呢还是介绍vbs脚本程序备份数据的计划任务.怎么想起来备份数据呢,近期呢,领导突然想到对公司的SAP备份数据进行异地备份,这样能提高数据的可恢复性:公司的SAP的系统是每天晚上2点执行一次备份,然后新的一天数据会覆盖旧的数据,如果当数据出现错误,我们也无法使用该之前的备份进行

Vbs 脚本编程简明教程之一

-为什么要使用 Vbs ? 在 Windows 中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动 计算机第一件事情就是打开 WORD ,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某 些数据进行整理,把各式各样的数据按照某种规则排列起来--.这些事情重复.琐碎,使人容易疲劳. 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往

BAT&VBS脚本:Windows连接VPN后同时登陆内网和外网

今天连公司的VPN,发现连上去之后就登陆不了外网了,上网查了下,再加上与同事的交流,发现连接VPN后同时登陆外网需要下面几个步骤: (我的环境:Windows 7 旗舰版 Service Pack 1) 1)建立好VPN,连接VPN 2)进入到VPN属性页面 3)找到网络选项卡,选中"Internet版本协议4(TCP/IPv4)",点击下方的"属性"按钮 4)在"Internet版本协议4(TCP/IPv4)"的属性界面中,点击"高级

Vbs脚本将本地文件上传到Azure存储账户

说到Azure相信大家都已经非常熟悉了,所以就不做多介绍了,我们都知道在Azure上有一个存储账户,在存储账户下可以可以创建容器,可以存放数据,近期公司呢为了达到数据的安全性,准备将本地的备份数据给Azure存储账户下备份一份: Azure提供了很多方法可以将本地的文件上传到Azure存储账户下,比如Powershell.Azcopy.存储文件管理工具,但是存储工具和powershell不支持断点续传,只有Azcopy支持断点续传,所以我们就用Azcopy进行数据的传输,在此说一下Azcopy也

Vbs脚本经典教材

转载:http://www.cnblogs.com/BeyondTechnology/archive/2011/01/10/1932440.html Vbs脚本经典教材(最全的资料还是MSDN) -为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可

VBS脚本完美实现开机延时启动

目录 概述 vbs内容示例: vbs示例语句分析 自定义vbs脚本 一些问题和解决方法 概述 系统开机时,顺带自动启动了不少驱动程序,使得电脑开机后鼠标要呆滞许久.为了加快windows的开机速度,在参考网上不少大牛的资料后,整理出使用vbs脚本利实现开机后延时启动程序的方法 vbs内容示例: #1 Dim delayer #2 Set delayer = CreateObject("WScript.Shell") #3 WScript.sleep 8000 #4 delayer.Ru

vbs脚本

巧用Vbs SendKeys 可以做的事 发布: 2014-04-06 10:00:20 | 作者: | 来源: 按键精灵资源站 巧妙使用VBS中的SendKeys命令(这个命令的作用就是模拟键盘操作,将一个或多个按键指令发送到指定Windows窗口来控制应用程序运行),可以极大的方便我们的常用操作.其使用格式为: Object.SendKeys string其中: Object:为WshShell对象,即脚本的第一行为: Set WshShell=WScript.CreateObject("W