亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

初窺WMI_Vbs腳本編程簡(jiǎn)明教程補(bǔ)充讀物第2/2頁(yè)

 更新時(shí)間:2008年06月19日 12:23:11   作者:  
看了沼澤介紹的wmi腳本相關(guān)知識(shí),對(duì)新手是個(gè)不錯(cuò)的教材,如果想和系統(tǒng)結(jié)合的更好,想實(shí)現(xiàn)更大功能的代碼,那么學(xué)習(xí)vbs就不得不用wmi腳本

1.任務(wù)四:利用腳本實(shí)時(shí)監(jiān)視對(duì)方進(jìn)程
在任務(wù)一和任務(wù)三中我們都是在查看對(duì)方的進(jìn)程,出來(lái)的結(jié)果對(duì)我們意義不是很大,在這個(gè)任務(wù)中我們要從現(xiàn)在開始每當(dāng)他開一個(gè)任務(wù)我們就察覺(jué)到,并把它記錄下來(lái)。我們要在他開進(jìn)程的那一秒開始報(bào)告并記錄,我們要清楚他所開的程序所在的位置,我們要比他更清楚地知道這些信息。
現(xiàn)在我們就按照前面提到的三個(gè)步驟來(lái)實(shí)現(xiàn)任務(wù)。
首先,我們連接到對(duì)方的WMI。在這里我們首先調(diào)用 VBScript 的中的Createobject()來(lái)得到一個(gè)對(duì)象,然后利用這個(gè)特殊的對(duì)象的方法來(lái)連接到遠(yuǎn)程的計(jì)算機(jī)上。這個(gè)特殊的對(duì)象就是wbemscripting.swbemlocator。
set olct=createobject("wbemscripting.swbemlocator")
set wbemServices=olct.connectserver(strComputer,"root\cimv2",strUser,strPwd)
注意其中的strComputer就是你所要連接的計(jì)算機(jī)的名稱或者IP地址,strUser,strPwd當(dāng)然就是用戶名和密碼了,我們說(shuō)過(guò)這個(gè)用戶必須是具有管理員權(quán)限的才可以。root\cimv2是WMI的命名空間,關(guān)于WMI的命名空間,大家可以到“計(jì)算機(jī)管理\WMI控件”中看到,這里面的學(xué)問(wèn)就大了,得慢慢琢磨,為了我們的任務(wù)快速實(shí)現(xiàn),我就不多解釋了。用這種方法連接到WMI,返回一個(gè)對(duì)SWbemServices對(duì)象的引用,一旦有一個(gè)對(duì) SWbemServices對(duì)象的引用。我們就可以進(jìn)行第二個(gè)步驟了。
在第二個(gè)步驟中,我們將得到WMI 托管資源的實(shí)例,我們利用WbemServices中的一個(gè)方法ExecNotificationQuery可以查詢我們所要的類,進(jìn)而可以得到該類中實(shí)例。
Set colMonitoredProcesses = wbemServices. _ 
ExecNotificationQuery("select * from __instancecreationevent " _ 
& " within 1 where TargetInstance isa 'Win32_Process'")
注意這里有個(gè)類似于SQL語(yǔ)言的查詢語(yǔ)言,這里叫做WQL語(yǔ)言,懂SQL的一看就明白了,不懂的就在網(wǎng)上找找它的資料,滿天都是。得到的colMonitoredProcesses是所查詢的類的實(shí)例的集合。有了這些我們的第三個(gè)步驟就可以開始了。
在第三個(gè)步驟中,我們將顯示出得到的實(shí)例中的屬性。剛才我們得到的是實(shí)例的集合,在這里我們通過(guò)colMonitoredProcesses.NextEvent來(lái)獲取每一個(gè)具體的實(shí)例,得到每一個(gè)具體的實(shí)例后,我們就可以顯示出他們的屬性,也就是我們想看的東西了。這里我們顯示了CommandLine的屬性值。
到現(xiàn)在你是否有些迷惑了,因?yàn)槟氵€不知道到底WMI里面有那些類,具體類又有哪些屬性,呵呵,沒(méi)有關(guān)系的,用一些工具可以很輕松的得到這些信息。比如系統(tǒng)自帶的wbemtest,在運(yùn)行中敲入這個(gè)程序名,你就可以看到這些了,它也遵循連接、查詢、枚舉這三個(gè)步驟。自己慢慢玩吧,很快你就會(huì)發(fā)現(xiàn)WMI太大了,單是命名空間就有10多個(gè),然后單是我們常用的空間root\CIMV2里面就有近1000個(gè)類,每個(gè)類里面又有好多的屬性,有些類還有好多方法。哈哈,頭暈了吧?沒(méi)關(guān)系,其實(shí)你只需要知道其中的一些就好了。
看到這些估計(jì)你的頭已經(jīng)很大了,但是恭喜你,我們的這個(gè)任務(wù)已經(jīng)完成了,是的,就是這么簡(jiǎn)單,下面我將完整代碼奉獻(xiàn)出來(lái)。
Set colArgs = WScript.Arguments
If WScript.arguments.count < 3 then
WScript.Echo "USAGE:" & vbCrLf & " Monitor Computer User Password files"
WScript.quit
End If
strComputer = wscript.arguments(0)
strUser = wscript.arguments(1)
strPwd = wscript.arguments(2)
strFile = wscript.arguments(3)

set olct=createobject("wbemscripting.swbemlocator")
set wbemServices=olct.connectserver(strComputer,"root\cimv2",strUser,strPwd)
Set colMonitoredProcesses = wbemServices. _ 
ExecNotificationQuery("select * from __instancecreationevent " _ 
& " within 1 where TargetInstance isa 'Win32_Process'")

i = 0
Do While i = 0
Set objLatestProcess = colMonitoredProcesses.NextEvent
Wscript.Echo now & " " & objLatestProcess.TargetInstance.CommandLine
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objNewFile = objFS.OpenTextFile(strFile,8,true)
objNewFile.WriteLine Now() & " " & objLatestProcess.TargetInstance.CommandLine
objNewFile.Close
Loop

到這個(gè)程序的核心了吧?相信你已經(jīng)懂了其中的很多,剩余的部分代碼我稍后解釋。我們先來(lái)感性認(rèn)識(shí)一下,先看它該怎么用吧!把上面的代碼拷貝到記事本中,然后保存為monitor.vbs的文件,然后在命令提示符下輸入:
CSCRIPT monitor.vbs 
回車,你就會(huì)看到幫助,下面舉例說(shuō)明這個(gè)腳本的具體用法:
CSCRIPT monitor.vbs 192.168.1.2 user password C:\1.txt
在命令提示符下敲入上面的命令就OK了,每當(dāng)對(duì)方開一個(gè)程序的時(shí)候,你就可以看到時(shí)間,程序路徑和程序名。如果你沒(méi)有時(shí)間去看這些信息,你還可以等有時(shí)間的時(shí)候到C:\1.txt看到這些信息。

小知識(shí):
每次使用腳本,都必須敲入CSCRIPT和腳本的后綴名,很麻煩。這是因?yàn)橄到y(tǒng)默認(rèn)的執(zhí)行引擎是WSCRIPT,可以將它改成CSCRIPT。另外一個(gè)讓人不爽的是腳本執(zhí)行后總要顯示微軟的說(shuō)明,好像腳本不是我們寫的一樣。不過(guò)你可以通過(guò)在命令提示符下敲入下面的命令來(lái)解決這個(gè)問(wèn)題:
cscript //nologo //h:cscript //s
這樣你以后再運(yùn)行這些腳本的時(shí)候就不用在敲入CSCRIPT了,也不用在寫入.vbs的后綴名了,就上面的例子來(lái)說(shuō),你可以這樣用:
monitor 192.168.1.2 user password C:\1.txt

解釋:
1)前面的那幾行,大概就是為了顯示幫助和處理我們?cè)诤竺孑斎氲膮?shù)。應(yīng)用到了WScript.Arguments這個(gè)對(duì)象,利用它我們可以來(lái)獲取并處理腳本的參數(shù)。
2)那個(gè)死循環(huán)是為了讓我們一直監(jiān)視他(她),每當(dāng)他開一個(gè)程序,我們就得到一個(gè)新的實(shí)例,我們就可以知道他更多的信息,哈哈,夠狠吧。這樣你也就知道了,當(dāng)我們這個(gè)腳本運(yùn)行后,只有通過(guò)我們?nèi)藶橹兄共拍苤袛啾O(jiān)視,人為中止的方法大家可以用CTRL+C來(lái)完成,也可以用各種野蠻的方法來(lái)中止。
3)在代碼中出現(xiàn)的另外一個(gè)核心對(duì)象就是FileSystemObject,應(yīng)該是大家的老朋友了吧,我這里就不再做解釋了,我們?cè)谶@里應(yīng)用它主要是為了將結(jié)果同時(shí)保存到一個(gè)文件中,我們利用它來(lái)創(chuàng)建或打開一個(gè)文件,將信息追加進(jìn)去。
4)至于那個(gè)NOW,雖然體積很小,但是卻正是它給我們提供了時(shí)間這個(gè)重要的信息。
5)如果你想要監(jiān)視的是自己的計(jì)算機(jī)而不是遠(yuǎn)程的計(jì)算機(jī)(據(jù)我所知,這個(gè)應(yīng)用還是很廣的)。那么請(qǐng)將計(jì)算機(jī)名的參數(shù)寫為一個(gè)小點(diǎn),用戶名和密碼留為空。如下所示:
monitor . "" "" C:\1.txt

2.任務(wù)五:利用腳本給對(duì)方開放共享
有了任務(wù)四的基礎(chǔ),這次我們就先看代碼吧:
Set colArgs = WScript.Arguments
If WScript.arguments.count < 5 then
WScript.Echo "USAGE:" & vbCrLf & " Rshare Computer User Password SharePath ShareName"
WScript.quit
End If
strComputer = wscript.arguments(0)
strUser = wscript.arguments(1)
strPwd = wscript.arguments(2)
strPath = wscript.arguments(3)
strShareName = wscript.arguments(4)

intMaximumAllowed = 1
strDescription = "Temporary share"
Const SHARED_FOLDER = 0

set olct=createobject("wbemscripting.swbemlocator")
set wbemServices=olct.connectserver(strComputer,"root\cimv2",strUser,strPwd)
Set objSWbemObject = wbemServices.Get("Win32_Share")
intReturnValue = objSWbemObject.Create(strPath, _
strShareName, _
SHARED_FOLDER, _
intMaximumAllowed, _
strDescription)

if(intReturnValue = 0) Then
WScript.Echo "The share have been created successfully"
End If

解說(shuō):
1)我們可以看出來(lái)前面的那幾行是為顯示幫助和處理輸入?yún)?shù)而存在的。
2)緊接著設(shè)置了幾個(gè)變量,為以后做參數(shù)用的。這里我們可以先不理會(huì)它。
3)連接到主機(jī)的WMI,然后就是查詢。前面已經(jīng)說(shuō)的很詳細(xì)了。
4)這次得到實(shí)例集后,我們用了它的一個(gè)方法,也就是這個(gè)方法讓共享成為了可能,聯(lián)系到第二部分的內(nèi)容,我們不難知道第一個(gè)參數(shù)表示要共享的路徑和文件名,第二個(gè)參數(shù)表示共享名,第三個(gè)參數(shù)為0就可以了,第四個(gè)參數(shù)是指可以連接的人數(shù),第五個(gè)參數(shù)是共享描述了,而我們只關(guān)心前面的兩個(gè)參數(shù)。如果手頭有MSDN那就好辦了,到MSDN中可以查到該方法的更詳細(xì)的內(nèi)容。
5)這次我們根據(jù)第四步的返回值來(lái)得到共享是否成功,并給出提示。不同的返回值代表不同的意義。這個(gè)信息在MSDN中可以很清楚地查到。比如0代表成功返回,2代表拒絕訪問(wèn),9代表用戶名錯(cuò)誤,25代表主機(jī)名沒(méi)有找到等等。
6)這次我們要注意的是,用這個(gè)腳本來(lái)實(shí)現(xiàn)遠(yuǎn)程文件共享,要求遠(yuǎn)程存在這個(gè)文件,否則無(wú)法共享。當(dāng)然你也可以利用教本創(chuàng)建自己的文件夾,很容易的,自己創(chuàng)建吧。
7)如上腳本創(chuàng)建后的共享是完全共享。就是可以刪除修改文件的。
8)用法舉例:share netp net swswsw C:\dodo marsh

好了,到現(xiàn)在為止,大家應(yīng)該對(duì)這位朋友有些了解了,我的介紹任務(wù)也就告一段落了,如果大家想進(jìn)一步認(rèn)識(shí)它,那就主要靠大家的主動(dòng)性了。這次我們主要通過(guò)WMIC和腳本來(lái)認(rèn)識(shí)它,下次我將帶領(lǐng)大家通過(guò)真正的程序代碼來(lái)認(rèn)識(shí)它,讓它也有個(gè)象Windows一樣漂亮的臉蛋。今天我所提到的估計(jì)只能算是WMI的萬(wàn)分之一,都算不上是冰山一角。剩余的要靠自己來(lái)發(fā)揮了。如果你肯利用你的所學(xué),那么奇跡就會(huì)產(chǎn)生。

相關(guān)文章

最新評(píng)論