利用WMI實(shí)現(xiàn)系統(tǒng)補(bǔ)丁檢測分析
WMI是Windows 2000/XP管理系統(tǒng)的核心;對(duì)于其它的Win32操作系統(tǒng),WMI是一個(gè)有用的插件。WMI以CIMOM為基礎(chǔ),CIMOM即公共信息模型對(duì)象管理器 (Common Information Model Object Manager),是一個(gè)描述操作系統(tǒng)構(gòu)成單元的對(duì)象數(shù)據(jù)庫,為MMC和腳本程序提供了一個(gè)訪問操作系統(tǒng)構(gòu)成單元的公共接口。Windows 管理規(guī)范 (WMI) 是可伸縮的系統(tǒng)管理結(jié)構(gòu),它采用一個(gè)統(tǒng)一的、基于標(biāo)準(zhǔn)的、可擴(kuò)展的面向?qū)ο蠼涌凇N以趧傞_始理解WMI的時(shí)候,總以為WMI是“Windows管理接口(Interface)”。
下面我們就詳細(xì)來了解如何利用WMI實(shí)現(xiàn)補(bǔ)丁的檢測過程。圖1是整個(gè)檢測過程的流程圖。
圖1.利用WMI實(shí)現(xiàn)補(bǔ)丁檢測之流程圖
第一步,設(shè)置需要檢測的補(bǔ)丁號(hào)。我們知道,微軟的每個(gè)補(bǔ)丁都會(huì)有一個(gè)標(biāo)準(zhǔn)的編號(hào)(如KB828741),對(duì)于最新的補(bǔ)丁,我們可以從微軟的網(wǎng)站上獲得。然后,將希望用戶安裝的補(bǔ)丁號(hào)放到一個(gè)數(shù)組里。根據(jù)不同Windows操作系統(tǒng)我們需要設(shè)置不同檢測補(bǔ)丁號(hào)。基于當(dāng)前Windows系統(tǒng)使用情況,我只對(duì)Windows 2000/2003/XP進(jìn)行檢測。
圖1.利用WMI實(shí)現(xiàn)補(bǔ)丁檢測之流程圖
第一步,設(shè)置需要檢測的補(bǔ)丁號(hào)。我們知道,微軟的每個(gè)補(bǔ)丁都會(huì)有一個(gè)標(biāo)準(zhǔn)的編號(hào)(如KB828741),對(duì)于最新的補(bǔ)丁,我們可以從微軟的網(wǎng)站上獲得。然后,將希望用戶安裝的補(bǔ)丁號(hào)放到一個(gè)數(shù)組里。根據(jù)不同Windows操作系統(tǒng)我們需要設(shè)置不同檢測補(bǔ)丁號(hào)?;诋?dāng)前Windows系統(tǒng)使用情況,我只對(duì)Windows 2000/2003/XP進(jìn)行檢測。
‘ 對(duì)于windows 2000
arrFixed_WIN2K=Array("KB840315","KB870669","KB828741","KB835732",
"KB840987","KB841356","KB885835","KB885836",
"KB842526","KB841872","KB841873","KB889293")
'對(duì)windows 2003系統(tǒng)
arrFixed_WIN2K3=Array("KB834707","KB840374","KB867801","KB833987",
"KB873376","KB885835","KB885836")
'對(duì)于windows xp SP1
arrFixed_XP1=Array("KB840987","KB833987","KB839645","KB840315","KB841873","
KB873376","KB841356","KB889293","KB885835","KB885836")
'對(duì)于windows xp SP2
arrFixed_XP2=Array("KB834707","KB885835","KB885836")
第二步,創(chuàng)建WMI對(duì)象,并和目標(biāo)主機(jī)建立連接。
Dim objWMIService // WMI對(duì)象
Dim strComputer = “.” // 地址為當(dāng)前主機(jī)
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
首先,定義兩個(gè)變量objWMIService和strComputer,第一個(gè)為我們要?jiǎng)?chuàng)建的服務(wù)定位對(duì)象,第二個(gè)為目標(biāo)主機(jī)IP地址(如果為當(dāng)前主機(jī)者為“.”)。第三句創(chuàng)建一個(gè)連接到目標(biāo)主機(jī)的服務(wù)對(duì)象,定義名字空間參數(shù)為“root\cimv2”。在這個(gè)名字空間里有我們接下來要用的系統(tǒng)信息。
Socket:詳細(xì)代碼請看光盤附送的Check_patch.txt,更改文件擴(kuò)展名txt為VBS,在Windows下可雙擊運(yùn)行,如果當(dāng)前系統(tǒng)檢測出未打補(bǔ)丁,則出現(xiàn)提示窗口,否則無。
第三步,讀取當(dāng)前用戶操作系統(tǒng)信息,及其安裝補(bǔ)丁的情況。在名字空間“root/cimv2”下,實(shí)例“Win32_OperatingSystem”為我們提供了詳細(xì)的當(dāng)前操作系統(tǒng)信息。我們采用Wql(sql for WMI)來讀取該實(shí)例,熟悉SQL語法的朋友一看就知道是在做什么了。
' 先判斷主機(jī)系統(tǒng)信息:OS,SP補(bǔ)丁版本情況
' 獲取系統(tǒng)信息
Dim objOSInfo // 獲取操作系統(tǒng)信息
Dim intOSver,intOStype,intCurrentSP // 當(dāng)前系統(tǒng)版本,類型,Service Pack號(hào)
Set objOSInfo = osvcRemote.ExecQuery("Select ServicePackMajorVersion,Version,OSType FROM Win32_OperatingSystem")
For Each colOSInfo In objOSInfo
intCurrentSP = colOSInfo.ServicePackMajorVersion ‘sp安全補(bǔ)丁版本
intOSver = colOSInfo.Version ‘操作系統(tǒng)版本號(hào)
intOStype = colOSInfo.OSType ‘操作系統(tǒng)類型
Next
Socket:如何知道要連接哪個(gè)名字空間,獲得哪些對(duì)象呢?《WMI技術(shù)指南》[3]中分類列出了大量常用的對(duì)象??上鼪]有相應(yīng)的電子書,你只有到書店里找它了。你也可以用WMITools里WMI CIM Studio這個(gè)工具的搜索功能,很容易就能找想要的對(duì)象。找到對(duì)象后,WMI CIM Studio能列出其屬性和方法,然后到MSDN里找具體的幫助。
第四步,獲取當(dāng)前系統(tǒng)已經(jīng)安裝的補(bǔ)丁信息。在“root\cimv2”下,實(shí)例“Win32_QuickFixEngineering”下的“HotFixID”屬性存放了當(dāng)前系統(tǒng)所安裝的補(bǔ)丁信息。
'*******************************************************************
'*讀取目標(biāo)主機(jī)已安裝補(bǔ)丁列表到字符串strFixedList
'*******************************************************************
Dim colQFE, objQFE
Dim strHotFixID, strFixedList, strFind, strNoFixed
Set colQFE = osvcRemote.ExecQuery("SELECT HotFixID FROM Win32_QuickFixEngineering")
第四步,將讀取的用戶補(bǔ)丁號(hào)存到一數(shù)組變量,然后與我們在“第一步“定義的相應(yīng)數(shù)組進(jìn)行匹配,找出當(dāng)前系統(tǒng)未安裝的補(bǔ)丁號(hào)。這部分的實(shí)現(xiàn)比較簡單,請參考后面的代碼。
第五步,顯示最后檢測結(jié)果。
至此,整個(gè)補(bǔ)丁檢測過程結(jié)束,只要將本腳本文件進(jìn)行點(diǎn)擊運(yùn)行,就可以完成補(bǔ)丁的檢查。特別是對(duì)于已經(jīng)在企業(yè)中建立起Acitve Directory域的網(wǎng)絡(luò)管理員來說,只要將此腳本添加到域控制器的組策略里,對(duì)每個(gè)登陸到域的用戶進(jìn)行補(bǔ)丁檢測,提示用戶最新補(bǔ)丁信息,再也不用為用戶沒有安裝最新補(bǔ)丁而苦惱了,大大提高了企業(yè)內(nèi)部網(wǎng)絡(luò)安全管理。
欄 目:vb
下一篇:vbScript中WScript.Shell對(duì)象的run和exec使用心得分享
本文標(biāo)題:利用WMI實(shí)現(xiàn)系統(tǒng)補(bǔ)丁檢測分析
本文地址:http://mengdiqiu.com.cn/a1/vb/7592.html
您可能感興趣的文章
- 01-10利用WSH里的MapNetworkDrive方法腳本蠕蟲的傳播方式
- 01-10利用vbscript腳本修改文件內(nèi)容,此適用于自動(dòng)化的操作中
- 01-10利用VBS腳本自動(dòng)創(chuàng)建計(jì)算機(jī)帳戶的代碼
- 01-10利用wscript執(zhí)行文件[包括可執(zhí)行exe文件]vbs腳本
- 01-10多進(jìn)程的實(shí)現(xiàn)投票的vbs腳本
- 01-10利用vbs腳本實(shí)現(xiàn)設(shè)置IE的打印頁眉頁腳信息
- 01-10利用VBS腳本輕松盜U盤數(shù)據(jù)
- 01-10兩個(gè)vbs腳本利用了wscirpt.network
- 01-10用vbs實(shí)現(xiàn)定時(shí)運(yùn)行web文件的方法
- 01-10vbscript腳本編程教程2利用fso來進(jìn)行文件操作


閱讀排行
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語法速查及實(shí)例說明
隨機(jī)閱讀
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子