📄 avp7.au3
字号:
#include <File.au3>
#include <array.au3>
#include <date.au3>
;首先判断卡巴是不是已经安装在系统
If RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","avp") <> "" Then
MsgBox(64,"Note","系统已经安装卡巴""" & FileGetVersion(RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","avp")) & """无须再安装!")
Exit
EndIf
Run("regedit /s set.reg")
Run("regedit /s 主动防御.reg")
Run("regsvr32 /s shellex.dll")
$AVP7="HKLM\SOFTWARE\KasperskyLab\protected\AVP7"
If DriveGetType(StringLeft(@ScriptDir,2)) = "CDROM" Then
If FileExists(@systemdir & "\pecmd.exe") Then
$basedir = FileSelectFolder("请为病毒库(bases)选择路径,取消或关闭接拷贝病毒库到X盘", "")
If $basedir = "" Then
DirCopy(@scriptdir & "\bases", "x:\avp\bases" )
Sleep(3000)
$basedir = "x:\avp"
EndIf
Else
$drvletter = "a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:"
$firstu = "z:"
$drives = _GetUSBDrives()
for $i=1 to UBound($drives)-1
If StringInStr($drvletter, $drives[$i]) < StringInStr($drvletter, $firstu) Then
$firstu = $drives[$i]
EndIf
$usbdrv = $usbdrv & $drives[$i] & " "
Next
$usbdrv=StringReplace($usbdrv,"0","") ;显示所有U盘
If DriveStatus($firstu)<> "READY" Then
$selectpath = InputBox("hint", "U盘不存在或不可用,请选择是否将病毒库拷贝到硬盘(Y/N):","Y")
If $selectpath = "Y" Then
$basedir = FileSelectFolder("请为病毒库选择路径,取消或关闭程序将退出", "")
If $basedir = "" Then Exit
If Not FileExists($basedir & "\bases") Then DirCreate($basedir & "\bases")
_filecopy (@ScriptDir & "\bases", $basedir)
WinWaitClose("正在复制...")
Else
Exit
EndIf
Else
If DriveSpaceFree($firstU & "\")<30 Then
msgbox(64,"hint","U盘剩余空间不足30M,程序退出")
Exit
EndIf
If Not FileExists($firstu & "\utool\avp\bases") then
MsgBox(64,"hint","本程序将向U盘或第一分区拷贝病毒库文件,此过程有点痛苦,但就此一次,请耐心等待!")
If Not FileExists($firstu & "\utool\avp\bases") Then DirCreate($firstu & "\utool\avp\bases")
_filecopy (@ScriptDir & "\bases", $firstu & "\utool\avp")
WinWaitClose("正在复制...")
EndIf
$basedir = $firstu & "\utool\avp"
EndIf
EndIf
Else
$basedir = @ScriptDir
EndIf
RegWrite($AVP7 & "\environment", "DataRoot", "REG_SZ", $basedir)
RegWrite($AVP7 & "\environment", "ProductRoot", "REG_SZ", @ScriptDir)
RegWrite($AVP7 & "\settings", "LoginImage", "REG_SZ", @ScriptDir & "\Skin\images\lgnkav.png")
RegWrite($AVP7 & "\settings", "Ins_ProductPath", "REG_SZ", @ScriptDir & "\")
RegWrite("HKLM\SOFTWARE\KasperskyLab\SetupFolders", "KAV7", "REG_SZ", @ScriptDir)
RegWrite("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\klogon", "DllName", "REG_SZ", "klogon.dll")
If FileExists($basedir & "\key.reg") Then
$KeyDateArray=FileGetTime($basedir & "\key.reg",1)
If _DateDiff ('d',$KeyDateArray[0]&"/"&$KeyDateArray[1]&"/"&$KeyDateArray[2], _NowCalcDate())>=25 Then
FileDelete($basedir & "\key.reg")
regdelete ("HKLM\SOFTWARE\Microsoft\SystemCertificates\SPC")
regdelete ("HKLM\SOFTWARE\KasperskyLab\LicStorage")
Else
Run("regedit /s """ & $basedir & "\key.reg""")
EndIf
EndIf
Call("createbat")
Sleep(3000)
Call("runavp")
;关闭过期窗口
While WinExists("[CLASS:AVP.LicenseExpirationWindow]")
WinClose("[CLASS:AVP.LicenseExpirationWindow]")
ProcessClose("avp.exe")
FileDelete($basedir & "\key.reg")
;removekey
regdelete ("HKLM\SOFTWARE\Microsoft\SystemCertificates\SPC")
regdelete ("HKLM\SOFTWARE\KasperskyLab\LicStorage")
Run("avp.exe")
Sleep(3000)
WEnd
Call("activation")
;自动激活
Func activation() ;activating and generating new key
If _iscon() Then
$timebegin = TimerInit()
While WinExists("[CLASS:AVP.ConfigureWizard]")
WinActivate("[CLASS:AVP.ConfigureWizard]")
send("T")
Sleep(200)
send("N")
While WinExists("[CLASS:AVP.ConfigureWizard]")
WinActivate("[CLASS:AVP.ConfigureWizard]")
If StringRight(ControlGetText("[CLASS:AVP.ConfigureWizard]","","[CLASSNN:AVP.Button42]"),2) = "F)" Then
Send("f")
EndIf
If StringRight(ControlGetText("[CLASS:AVP.ConfigureWizard]","","[CLASSNN:AVP.Button44]"),2) = "F)" Then
Send("f")
EndIf
If TimerDiff($timebegin) > 240000 Then
MsgBox(64, "Notice", "已经超过4分钟没有激活成功,程序将于2秒后关闭此窗口!", 2)
WinClose("[CLASS:AVP.ConfigureWizard]")
ExitLoop
EndIf
WEnd
Run(@ComSpec & " /c " & "reg export hklm\software\kasperskylab\licstorage """ & $basedir & "\key.reg""","" ,@SW_HIDE) ;export one month key
WEnd
Else
While WinExists("[CLASS:AVP.ConfigureWizard]")
WinClose("[CLASS:AVP.ConfigureWizard]")
WEnd
EndIf
EndFunc
;创建批处理
Func createbat()
FileWrite($basedir & "\avp.bat","start /wait " & @ScriptDir & "\avp.exe" & @CRLF & "regedit /s """ & @ScriptDir & "\delavp.reg""" & @CRLF & "REGSVR32 /S msxml3.dll" & @CRLF & "REGSVR32 /S vbscript.dll" & @CRLF & "REGSVR32 /S jscript.dll" & @CRLF & "del """ & $basedir & "\avp.bat""" & @CRLF & "exit")
EndFunc
;启动批处理
Func runavp()
Run($basedir & "\avp.bat","",@SW_HIDE)
Sleep(5000)
EndFunc
;以下是判断USB盘符
Func _GetUSBDrives()
Local $aDletters[1]
$strComputer = "."
Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
Local $colDiskDrives = $objWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive")
For $objDrive In $colDiskDrives
If $objDrive.pnpdeviceid <> RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Disk\Enum", _
RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Disk\Enum","count")-1) then Continueloop
$strDeviceID = StringReplace($objDrive.DeviceID, "\", "\\")
Local $colPartitions = $objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & _
$strDeviceID & """} WHERE AssocClass = " & _
"Win32_DiskDriveToDiskPartition")
For $objPartition In $colPartitions
Local $colLogicalDisks = $objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _
$objPartition.DeviceID & """} WHERE AssocClass = " & _
"Win32_LogicalDiskToPartition")
For $objLogicalDisk In $colLogicalDisks
_ArrayAdd($aDletters,$objLogicalDisk.DeviceID )
Next
Next
Next
Return $aDletters
EndFunc
;判断网络连接
Func _IsCon() ;judge internet connection
Local $inetTest = DllCall("WinInet.dll","int","InternetGetConnectedState","int_ptr",0,"int",0)
Return $inetTest[0]
EndFunc
;带进度条拷贝
Func _FileCopy($fromFile,$tofile)
Local $FOF_RESPOND_YES = 16
Local $FOF_SIMPLEPROGRESS = 256
$winShell = ObjCreate("shell.application")
$winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)
EndFunc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -