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

📄 ukill.au3

📁 制作winpe的自启动的源码。公开代码
💻 AU3
字号:
;钩子程序,启动第一U盘上的托盘及判断U盘状态
;Made by victor888, revised on 2007-11-21
#include <File.au3>
#include <array.au3>
Opt("TrayMenuMode",1)	; Default tray menu items (Script Paused/Exit) will not be shown.

;以下光盘盘符
$CDROM = StringLeft(@scriptdir, 2)
		
If FileExists(@systemdir & "\pecmd.exe") Then
	ShellExecute("explorer.exe", "/n,/e," & $CDROM)
	Exit
EndIf

If ProcessExists("vptray.exe") or ProcessExists("rtvscan.exe") or ProcessExists("savscan.exe") Then
	MsgBox(64,"Hint","诺顿正在运行,将不在启动卡巴,程序退出。")
	Exit
EndIf

$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盘

;以下判断U盘状态
If DriveStatus($firstu) <> "READY" Then
	MsgBox(64, "hint", "U盘未就绪,请检查,程序退出!")
	Exit
EndIf

$RegRun = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
If RegRead($RegRun, "avp")<>"" Then
	If not ProcessExists("avp.exe") Then Run (RegRead($RegRun, "avp"))
	$avpcom = StringReplace(RegRead($RegRun, "avp"),"activate.exe","avp.com")
	$avpcom = StringReplace(RegRead($RegRun, "avp"),"avp.exe","avp.com")
	$avpcom = StringReplace($avpcom,"""","")
Else
	;以下将启动卡巴绿色版,要求病毒库位于U盘第一分区
	If Not FileExists($firstu & "\utool\avp\bases") Then
		If DriveSpaceFree($firstU & "\")>30 Then
			MsgBox(64,"hint","可移动U盘或固定U盘第一分区不存在卡巴病毒库bases目录,将从光盘拷贝,请等待!")
			If Not FileExists($firstu & "\utool\avp\bases") Then DirCreate($firstu & "\utool\avp\bases")
			_FileCopy($CDROM & "\programs\avp\bases\", $firstu & "\utool\avp\")
			WinWaitClose("正在复制...", "", 50000)	
			$avpcom = $CDROM & "\programs\avp\avp.com"
			$basedir = $firstu & "\utool\avp"
			Call("avp7")
			$showkill = True
		Else
			MsgBox(64,"hint","可移动U盘或固定U盘第一分区剩余空间小于30M,无法从光盘拷贝病毒库!")
			$showkill = False
		EndIf
	Else
		$basedir = $firstu & "\utool\avp"
		$avpcom = $CDROM & "\programs\avp\avp.com"
		Call("avp7")
		$showkill = True
	EndIf
EndIf

;以下为托盘过程
$killitem = ""
If $showkill = true Then
	$killitem	= TrayCreateItem("对U盘进行杀毒")
	TrayCreateItem("")
EndIf

$installitem= ""
If FileExists($firstu & "\utool\usoft.iso") Then
	$installitem	= TrayCreateItem("安装常用软件")
	TrayCreateItem("")
EndIf

$redleafitem= ""
If FileExists($CDROM & "\redleaf.exe") then
	$redleafitem = TrayCreateItem("启动超级工具箱")
	TrayCreateItem("")
EndIf

$readmeitem	= ""
If FileExists($firstu & "\utool\readme.txt") then
	$readmeitem	= TrayCreateItem("使用说明")
	TrayCreateItem("")
EndIf

$aboutitem	= TrayCreateItem("关于")
TrayCreateItem("")
$exititem	= TrayCreateItem("退出所有")

TraySetState()

While 1
	$msg = TrayGetMsg()
	Select
		Case $msg = 0
			ContinueLoop
		Case $msg = $killitem
			;对U盘进行扫描
			Runwait ( $avpcom & " scan " & $usbdrv & " -e:a -i4", "", @SW_HIDE)
			WinClose(@SystemDir & "\cmd.exe")
		Case $msg = $readmeitem
			ShellExecute("readme.txt", "", $firstu & "\utool", "edit",@SW_MAXIMIZE)
		Case $msg = $installitem
			If ProcessExists("vdm1.exe") Then
				WinClose("Virtual Drive Manager")
				WinWaitClose("Virtual Drive Manager")
			EndIf
			Run($CDROM & "\programs\VDM\VDM1.EXE")
			WinWaitActive("Virtual Drive Manager")
			Send("{ENTER}")
			WinWaitActive("装载镜像文件")
			$newisodisk = ControlGetText("装载镜像文件","",1011)
			ControlSetText ( "装载镜像文件", "", 1001, $firstu & "\utool\usoft.iso" )
			Send("{ENTER}")
			WinSetState("Virtual Drive Manager","",@SW_HIDE)
			If not ProcessExists("usoft.exe") then run($newisodisk & "\usoft.exe")
		Case $msg = $redleafitem
			run($CDROM & "\redleaf.exe")
		Case $msg = $aboutitem
			Msgbox(64, "关于:", "Version 2.0" & @CRLF &"Made by Vitor888" & @CRLF & "QQ:511519860" & @CRLF & "MSN:victor168@msn.com")
		Case $msg = $exititem
			if ProcessExists("avp.exe") Then ProcessClose("avp.exe")
			if ProcessExists("avp7.exe") Then ProcessClose("avp7.exe")
			if ProcessExists("avp.com") Then ProcessClose("avp.com")
			if ProcessExists("vdm1.exe") Then WinClose("Virtual Drive Manager")
			if ProcessExists("redleaf.exe") Then ProcessClose("redleaf.exe")
			if ProcessExists("usoft.exe") Then ProcessClose("usoft.exe")
		ExitLoop
	EndSelect
WEnd

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

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 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 avp7()
	Run("regedit /s " & $CDROM & "\programs\avp\set.reg")
	Run("regedit /s " & $CDROM & "\programs\avp\主动防御.reg")
	Run("regsvr32 /s " & $CDROM & "\programs\avp\shellex.dll")
	$AVP7="HKLM\SOFTWARE\KasperskyLab\protected\AVP7"
	RegWrite($AVP7 & "\environment", "DataRoot", "REG_SZ", $basedir)
	RegWrite($AVP7 & "\environment", "ProductRoot", "REG_SZ", $CDROM & "\programs\avp")
	RegWrite($AVP7 & "\settings", "LoginImage", "REG_SZ", $CDROM & "\programs\avp\Skin\images\lgnkav.png")
	RegWrite($AVP7 & "\settings", "Ins_ProductPath", "REG_SZ", $CDROM & "\programs\avp\")
	RegWrite("HKLM\SOFTWARE\KasperskyLab\SetupFolders", "KAV7", "REG_SZ", $CDROM & "\programs\avp")
	RegWrite("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\klogon", "DllName", "REG_SZ", "klogon.dll") 
	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($CDROM & "\programs\avp\avp.exe")
		Sleep(3000)
	WEnd
	Call("activation")		
EndFunc

;创建批处理
Func createbat()
	FileWrite($basedir & "\avp.bat","start /wait " & $CDROM & "\programs\avp\avp.exe" & @CRLF & "regedit /s """ & $CDROM & "\programs\avp\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

;判断网络连接
Func _IsCon() ;judge internet connection
    Local $inetTest = DllCall("WinInet.dll","int","InternetGetConnectedState","int_ptr",0,"int",0)
    Return $inetTest[0]
EndFunc

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -