⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avp7.au3

📁 制作winpe的自启动的源码。公开代码
💻 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 + -