利用VRV检查WPS软件的安装率

  VRV是一款非常好的国产安全软件,功能很强大,细节做得也比较精细。也有一点小瑕疵,比如在检查WPS软件的安装上有时候不准,这个问题让人犯愁,想了几个办法来解决。

  我的做法:

  ① 如果正确安装了WPS,但是却被扫描没有安装,就进行下面的操作。
  打开C:\Windows\SysWOW64这个目录,并找到EdpUninstallSoftware.crc这个文件,删除它。重启计算机。

  ② 如果上述操作无法提取到WPS的安装,就卸载WPS,重新启动,再安装WPS。

  ③ 如果上述措施还是不行,就在磁盘上搜索uninstalledp.exe,运行,输入卸载密码(这个在后台软件上可以找到),然后再重新安装VRV软件。

  ④ 如果上面措施还是不行,终极大招,重做系统,重新注册,这个做法几乎没有失误。

  ⑤ 在控制页面上终端控制获取安装信息,这个操作没有成功过,总是报错,这也是软件要改进的地方。不清楚是从服务器上取数据还是直接从客户端上取,端口号也不清楚。

  正确计算机WPS的安装率。

  如果用户更换了IP地址,可能导致设备总数增加(MAC地址数没有)。

  所以要提高安装率并正确计算结果,第一找到没有安装的计算机,第二找到重复的记录。

  我在EXCEL中写了个小程序,在完成上面两步后计算安装率。

'对比两个表的数据列进行检查
Dim IFOR, JFOR As Integer
Dim SYQCY, SYTGS As String
Dim S1, S2, S3, S4, S5, S6 As String
Dim SResult As String              '记录检索结果
Dim allEquipment As Integer        '设备记录数
Dim OK As Integer
Dim ICOUNT As Integer
Dim allWps As Integer              'WPS安装记录数
Dim DuplicateRecord As Integer     '重复记录数
Dim explainTxt As String           '说明文字
Dim installationRate As Single     '安装率
Dim destTable As String            '对比的表
Dim srcTable As String             '源表
OK = 0
srcTable = "注册总数"
destTable = "WPS-Office安装记录"
DuplicateRecord = 0
allEquipment = 593
allWps = 580
'初始化
Sheets(srcTable).Activate
Columns("W:W").Select
Range("W560").Activate
Selection.Delete Shift:=xlShiftToLeft       '删除列内容
Sheets(destTable).Activate
Columns("K:K").Select
Range("K550").Activate
Selection.Delete Shift:=xlShiftToLeft
For IFOR = 3 To allEquipment
    Sheets(srcTable).Activate
    Range("I" + Trim(Str(IFOR))).Select
    SYQCY = UCase(Selection.FormulaR1C1)
    Sheets(destTable).Activate
    For JFOR = 3 To allWps
        'DoEvents   '释放系统控制权
        Range("I" + Trim(Str(JFOR))).Select
        SXJYT = UCase(Selection.FormulaR1C1)
        S1 = Left(SXJYT, 2)
        S2 = Mid(SXJYT, 3, 2)
        S3 = Mid(SXJYT, 5, 2)
        S4 = Mid(SXJYT, 7, 2)
        S5 = Mid(SXJYT, 9, 2)
        S6 = Right(SXJYT, 2)
        SXJYT = S1 + "-" + S2 + "-" + S3 + "-" + S4 + "-" + S5 + "-" + S6
        SResult = "没有安装!"
        If SYQCY = SXJYT Then
            '找到了
            SResult = "★"
            OK = OK + 1
            '记录找到的次数,大于1就表示是重复的记录,对比MAC地址
            Range("K" + Trim(Str(JFOR))).Select
            ICOUNT = Val(Selection.FormulaR1C1)
            ICOUNT = ICOUNT + 1
            If ICOUNT > 1 Then DuplicateRecord = DuplicateRecord + 1
            Selection.FormulaR1C1 = ICOUNT
            Exit For
        End If
    Next
    Sheets(srcTable).Activate
    Range("W" + Trim(Str(IFOR))).Select
    Selection.FormulaR1C1 = SResult
Next
allWps = allWps - 2
allEquipment = allEquipment - 2
installationRate = allWps / (allEquipment - DuplicateRecord)
installationRate = Round(installationRate * 100, 2)
explainTxt = "   设备总记录:" + Str(allEquipment)
explainTxt = explainTxt + vbCrLf + "   WPS安装数:" + Str(allWps)
explainTxt = explainTxt + vbCrLf + "   重复记录数:" + Str(DuplicateRecord)
explainTxt = explainTxt + vbCrLf + "   WPS没安装数:" + Str(allEquipment - allWps - DuplicateRecord)
explainTxt = explainTxt + vbCrLf + "   实际安装率:" + Str(installationRate) + "%"
MsgBox explainTxt, , "检查结果 10月28日 18:30"

  今天看了源程序,昨天为了快速得到结果用了两个For循环,第一个是应该的,第二个是可以避免的,第二个For循环换成一个Find函数就可以了,修改后程序的运行起来飞快。

Sub Dawn1029()
'对比两个表的数据列进行检查
Dim ifor As Integer
Dim SYQCY As String
Dim S1, S2, S3, S4, S5, S6 As String
Dim allEquipment As Integer        '设备记录数
Dim ICOUNT As Integer
Dim DuplicateRecord As Integer     '重复记录数
Dim explainTxt As String           '说明文字
Dim installationRate As Single     '安装率
Dim destTable As String            '对比的表
Dim srcTable As String             '源表
Dim findResult As Range            '检查结果
OK = 0
srcTable = "注册总数"
destTable = "WPS-Office安装记录"
DuplicateRecord = 0
allEquipment = 593
allWps = 580
allEquipment = 593
allWps = 580
'初始化
Sheets(srcTable).Activate
Columns("W:W").Select
Range("W560").Activate
Selection.Delete Shift:=xlShiftToLeft       '删除列内容
Sheets(destTable).Activate
Columns("K:K").Select
Range("K550").Activate
Selection.Delete Shift:=xlShiftToLeft
For ifor = 3 To allEquipment
    Sheets(srcTable).Activate
    Range("I" + Trim(Str(ifor))).Select
    SYQCY = UCase(Selection.FormulaR1C1)
    S1 = Left(SYQCY, 2)
    S2 = Mid(SYQCY, 4, 2)
    S3 = Mid(SYQCY, 7, 2)
    S4 = Mid(SYQCY, 10, 2)
    S5 = Mid(SYQCY, 13, 2)
    S6 = Right(SYQCY, 2)
    SYQCY = S1 + S2 + S3 + S4 + S5 + S6
    Sheets(destTable).Activate
    Set findResult = Range("I:I").Find(SYQCY)
    If Not (findResult Is Nothing) Then
        '找到
        SResult = "★"
        OK = OK + 1
        '记录找到的次数,大于1就表示是重复的记录,对比MAC地址
        Range("K" + Trim(Str(findResult.Row))).Select
        ICOUNT = Val(Selection.FormulaR1C1)
        ICOUNT = ICOUNT + 1
        If ICOUNT > 1 Then DuplicateRecord = DuplicateRecord + 1
        Selection.FormulaR1C1 = ICOUNT
    End If
    Sheets(srcTable).Activate
    Range("W" + Trim(Str(ifor))).Select
    Selection.FormulaR1C1 = SResult
Next
allWps = allWps - 2
allEquipment = allEquipment - 2
installationRate = allWps / (allEquipment - DuplicateRecord)
installationRate = Round(installationRate * 100, 2)
explainTxt = "   设备总记录:" + Str(allEquipment)
explainTxt = explainTxt + vbCrLf + "   WPS安装数:" + Str(allWps)
explainTxt = explainTxt + vbCrLf + "   重复记录数:" + Str(DuplicateRecord)
explainTxt = explainTxt + vbCrLf + "   WPS没安装数:" + Str(allEquipment - allWps - DuplicateRecord)
explainTxt = explainTxt + vbCrLf + "   实际安装率:" + Str(installationRate) + "%"
MsgBox explainTxt, , "检查结果 10月28日 18:30"
End Sub

  前面的程序运行起来后我是做别的事情等一会,耗时一般在22秒,修改后的程序只需要3秒就出了结果。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值