|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2006-09-01, 10:18 PM | #1 |
榮譽會員
|
軟體 - AutoIt實現AVP增量病毒庫自動下載和LAN內AVP Personal Pro客戶端升級實例
今天碰到一個朋友,向我徵求LAN(客戶機與Internet隔離)的AVP Personal Pro升級的方法。
網路情況: 企業LAN服務器可以連接Internet,客戶機不能連Internet。服務器對LAN不開放資料夾共享,只開放http和ftp。沒有AVP服務器版,安裝的全部都是AVP Personal Pro。 一開始,我提供的方法就是網管手動下載增量病毒庫,並解壓放到服務器的IIS資料夾上作為LAN的http Update url,修改客戶端AVP Personal Pro的update url為LAN的http Update url。 但是每天下載畢竟是一件很麻煩的事情,然後偶開始研究如何能讓服務器實現自動下載增量病毒庫並自動解壓到為LAN提供的升級資料夾上。於是今天研究了半天AutoIt的腳本,寫出了這麼個東西。 需求: 1.winzip Pro 2. WinZip Command Line Support Add-On 1.1 Service Release 1 (SR-1) 基本思路:實現每24小時下載一次增量病毒庫並解壓到指定資料夾。首次執行程式的時候,需要手工選擇增量病毒庫解壓的路徑。其中的ini文件記錄解壓路徑和最後一次更新的日期時間。 安裝winzip和 command Line support是解壓文件的需要,並且需要將wzunzip.exe和編譯後的文件放在同一個資料夾內。 下面是源碼,附件是編譯好的程式。第一次使用AutoIt,難免粗陋,希望大家多多指教。 代碼: ---------------------------------------------------------------------------- ; ; AutoIt Version: 3.1.0 ; Author: bbs@topoo ; ; Script Function: ; Template AutoIt script. ; ; ---------------------------------------------------------------------------- #include <GUIConstants.au3> #include <Constants.au3> #Include <date.au3> $unzip = 0 $dir = IniRead("updater.ini", "PATH", "Update Directory", "") If ($dir = "") Then MsgBox(0, "Welcome", "如果這是您第一次使用該程式,請選擇病毒庫的更新資料夾,此後自動更新的病毒庫將會自動解壓到該資料夾中,以後也可以自行更改updater.ini文件中的路徑,或者清空updater.ini文件的內容並重新執行程式來選擇資料夾。") EndIf While ($dir = "") $dir = FileSelectFolder("請選擇升級文件解壓路徑", "", 1) If ($dir <> "") Then IniWrite("updater.ini", "PATH", "Update Directory", $dir) EndIf WEnd While 1 If FileExists("daily.zip") Then FileDelete("daily.zip") EndIf InetGet("http://d-ru-2h.kaspersky-labs.com/bases/av/avc/i386_zip/daily.zip", "daily.zip", 1, 1) While @InetGetActive TrayTip("正在下載病毒庫升級文件", "已下載字節數 " & @InetGetBytesRead, 10, 16) Sleep(250) WEnd If ($unzip = 0 And (Not @InetGetActive)) Then TrayTip("正在解壓病毒庫到更新資料夾", "", 5) RunWait(@ComSpec & " /c " & 'wzunzip.exe -do daily.zip ' & $dir, "", @SW_HIDE) $unzip = 1 IniWrite("updater.ini", "Last Updated", "Date", _NowDate()) IniWrite("updater.ini", "Last Updated", "Time", _NowTime()) EndIf Sleep(86400000) $unzip = 0 WEnd |
__________________ |
|
送花文章: 3,
|