原始碼和文件分享 程式設計使用WMI

2021-09-27 11:07:48 字數 1217 閱讀 6385

背景

wmi出現至今已經二十多年了,但很多人對它並不熟悉。知道它很好很強大,但不知道它從**來,怎麼工作,使用範圍是什麼?

wmi有一組api。我們不管使用vbscript、powershell指令碼還是利用c#的來訪問wmi的類庫,都是因為wmi向外暴露的一組api。這些api是在系統安裝wmi模組的時候安裝的,通過他們我們能夠能拿到我們想要的類。

wmi有乙個儲存庫。儘管wmi的多數例項資料都不儲存在wmi中,但是wmi確實有乙個儲存庫,用來存放提供程式提供的類資訊,或者稱為類的藍圖或者schema。

wmi有乙個service。wmi總是能夠響應使用者的訪問,那是因為它有乙個一直執行的windows服務,名字叫winmgmt。停止這個服務,所有對wmi的操作都將沒有反應。

wmi是可擴充套件的。人人都知道wmi能幹很多事情,讀取本機硬碟資訊、讀取遠端計算機的使用者資訊、讀取域使用者資訊等等。基本上,你能想到的獲取或者更改資源的操作,它都能幹。可謂吃得少,幹得多。它為什麼這麼能幹呢?這基於wmi的可擴充套件性。wmi對資源的操作,不是它自己實現了什麼方法,而完全取決於向它註冊的提供程式。

wmi是管理員日常必備的強大工具之一,是指令碼伴侶。當然也可以把乙個大型系統建立在wmi以及wmi的提供程式之上。

wmi的全稱是windows management instrumentation,即windows管理工具。它是windows作業系統中管理資料和操作的基礎模組。我們可以通過wmi指令碼或者應用程式去管理本地或者遠端計算機上的資源。對於vc和彙編程式設計師,想獲取諸如cpu序列號和硬碟序列號等資訊是非常容易的。但是對於vb以及其他一些指令碼語言,想嘗試獲取系統中一些硬體資訊可能就沒那麼容易了。微軟為了能達到一種通用性目的(遵守某些行業標準),設計了wmi。它提供了乙個通過作業系統、網路和企業環境去管理本地或遠端計算機的統一介面集。應用程式和指令碼語言使用這套介面集去完成任務,而不是直接通過windows api。可能有人要問,為什麼不讓設計的指令碼直接在底層使用windows api,而非要弄個新的技術呢?原因是在目前windows api中,有些是不支援遠端呼叫或者指令碼呼叫的。這樣通過統一模型的wmi,像vb和指令碼語言就可以去訪問部分系統資訊了。但是並不是所有指令碼語言都可以使用wmi技術:它要支援activex技術。

wmi通常是被指令碼所呼叫的,不過也對。對於wmi能做的操作,我們也完全可以通過vs去呼叫win32 api去實現。但是,本文要講的是使用vs呼叫wmi提供的介面去獲取系統的資訊。那麼,vs中怎麼使用wmi呢?接下來,我就把我所了解的知識分享給大家。

原始碼和文件分享 執行單一例項

背景 病毒木馬在使用各種手段植入到使用者計算機後,也會使用渾身解數使自己被使用者執行啟用。但是,如果病毒木馬自己被多次重複執行,系統中存在多分病毒木馬的程序,那麼,這就有可能增加被暴露的風險。所以,要想解決上述問題,就要確保系統上只執行乙個病毒木馬的程序例項。確保執行乙個程序例項的實現方法有很多,可...

原始碼和文件分享 程式設計實現對ini配置檔案的讀寫

背景 在安裝一些應用程式的時候,我們經常可以其安裝目錄下看到有 ini 格式的配置檔案,這種格式配置檔案是我們比較常見的。在我們自己電腦的系統上也會有,而且還很多。很多系統自帶的程式,都會有乙個 ini 格式的配置檔案。為此,windows還特地提供了相應的win32 api函式去對 ini 格式的...

原始碼和文件分享 使用C 實現的N皇后問題

一 專案簡介 八皇后問題是乙個古老而著名的問題,是回溯演算法的經典問題。該問題是十九世紀著名的數學家高斯在1850年提出的 在8 8的西洋棋棋盤上,安放8個皇后,要求沒有乙個皇后能夠 吃掉 任何其它乙個皇后,即任意兩個皇后不能處於同一行,同一列或者同一條對角線上,求解有多少種擺法。高斯認為有76種方...