一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - 利用C#操作WMI指南

利用C#操作WMI指南

2021-12-10 14:41C#教程網 C#

WMI提供了一套內置在Microsoft Windows操作系統中的豐富的系統管理服務,可以在有大量的應用程序、服務和設備的系統中提供全方位的管理功能。它允許應用程序的開發者,使用簡單的、一致的機制,去查詢企業中的任一臺計算機上的

1 什么是WMI?

Windows Management Instrumentation (WMI)是可伸縮的系統管理結構,該規范采用一個統一、基于標準且可擴展的面向對象接口。它提供與系統管理員信息和基礎WMI API交互的標準方法,主要由系統管理應用程序開發人員和系統管理員用來訪問和操作系統管理信息;它可用來生成組織和管理系統信息的工具,使系統管理人員能夠更密切的監視系統活動。

WMI提供了一套內置在Microsoft Windows操作系統中的豐富的系統管理服務,可以在有大量的應用程序、服務和設備的系統中提供全方位的管理功能。它允許應用程序的開發者,使用簡單的、一致的機制,去查詢企業中的任一臺計算機上的信息,或是進行系統配置。

通過WMI接口可以獲得的信息量是驚人的,包括硬件設置,狀態信息,驅動器配置,BIOS信息,應用程序的設置,事件記錄信息,以及其他。WMI通過一組API來獲得信息,但它表征的是一種通過一個簡單,工業標準對象管理模式來獲取信息的函數。這使得應用程序的開發者不必學習Windows的每一個API的具體細節。

.Net FrameWork SDK對WMI提供了全面的支持,.Net FrameWork SDK為Visual C#能夠操作WMI提供了一個專門的命名空間"System.Management"。在命名空間"System.Management"中提供了大量用以處理和WMI相關的類、接口和枚舉。在使用WMI之前,必須在工程中添加對System.Management.dll的引用,然后聲明

using System.Management;

2 使用WMI連接遠程計算機

系統管理員可以通過目標機器的機器名(或者IP地址),用戶名以及密碼去查詢遠程計算機的狀態和信息,以及利用腳本執行一些管理工作。利用WMI連接遠程計算機是很方便的,可以參考下面的格式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
ManagementObjectSearcher query;  
ManagementObjectCollection queryCollection;
System.Management.ObjectQuery oq;
 
string machineName = "110.119.110.1"; //連接的目標機的IP地址或者機器名
co.Username = "YourName";         //連接需要的用戶名
co.Password = "YourPassword";      //連接需要的密碼
string connectString = "SELECT * FROM Win32_PnPSignedDriver"//查詢字符串
 
System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\" + machineName + "\\root\\cimv2", co);
oq = new System.Management.ObjectQuery( connectString );
query = new ManagementObjectSearcher( ms, oq );
queryCollection = query.Get();

通過IP地址,用戶名和密碼就建立了一個可以查詢Win32_PnPSignedDrvier這個類(關于這個類的詳細信息請查詢MSDN)所有信息的連接。現在我們就可以遠程獲取目標機器上的所有Pnp驅動的信息了。是不是很方便?在得到所有的信息后,我們可以通過下面的兩種方式來獲取我們需要的屬性

?
1
2
3
4
5
6
7
8
9
10
11
foreach ( ManagementObject mo in queryCollection)
{
 // string hardwareID  = mo["HardwareID"]); //直接根據屬性名得到屬性的值
 
 //遍歷所有屬性,得到所有屬性的值
 PropertyDataCollection searcherProperties = mo.Properties;
 foreach (PropertyData sp in searcherProperties)
 {
 Console.WriteLine("Name = {0, -20}, Value = {1, -20}", sp.Name,sp.Value);
 }
}

3 使用WMI連接本地計算機

使用WMI連接本地計算機也是非常方便的,我們只需要稍微修改一下上面的代碼就可以了。

?
1
2
3
string machineName = "localhost";
co.Username = "";
co.Password = "";

也可以用比較簡單的格式,直接使用查詢語句。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
string connectString = "SELECT * FROM Win32_PnPSignedDriver";
 
SelectQuery selectQuery = new SelectQuery( connectString );
ManagementObjectSearcher searcher = new ManagementObjectSearcher( selectQuery );
 
foreach (ManagementObject mo in searcher.Get())
{
 PropertyDataCollection searcherProperties = mo.Properties;
 foreach (PropertyData sp in searcherProperties)
 {
 Console.WriteLine(sp.Name + " " + sp.Value);
 }
}

4 查詢語句的格式

上面的連接字符串connectString其實有很多種格式。對于WMI來說,使用WQL查詢所需要的信息。WQL繼承了SQL的一些語法。但是并不是說所有SQL的語句都可以用于WQL。常用的格式有如下幾種。

(1)查詢系統中類中所有對象的所有屬性
connectString = "SELECT * FROM Win32_PnPSignedDriver"

(2)查詢類中所有對象的HardwareID屬性
connectString = "SELECT HardwareID FROM Win32_PnPSignedDriver"

(3)查詢類中所有對象的HardwareID和DriverVersion屬性
connectString = "SELECT HardwareID, DriverVersion FROM Win32_PnPSignedDriver"

(4)查詢類中所有對象的HardwareID和DriverVersion屬性,并且對象的HardwareID必須以IBM254D結尾
connectString = "SELECT HardwareID, DriverVersion FROM Win32_PnPSignedDriver WHERE HardwareID like '%IBM254D'"

(5)查詢類中所有對象的HardwareID和DriverVersion屬性,并且對象的HardwareID必須以Monitor開頭
connectString = "SELECT HardwareID, DriverVersion FROM Win32_PnPSignedDriver WHERE HardwareID like 'Monitor%'"

(6)查詢類中所有對象的HardwareID和DriverVersion屬性,并且對象的HardwareID必須是以Monitor開頭,以IBM254D結尾,而且之間只有一個任意的字符
connectString = "SELECT HardwareID, DriverVersion FROM Win32_PnPSignedDriver WHERE HardwareID like 'Monitor_IBM254D'"

(7)查詢類中所有對象的HardwareID和DriverVersion屬性,并且對象的HardwareID必須是以Monitor開頭,以IBM254D結尾,而且之間只有一個任意的字符,還要滿足InfName必須是oem18.inf
connectString = "SELECT HardwareID, DriverVersion FROM Win32_PnPSignedDriver WHERE HardwareID like 'Monitor_IBM254D' AND InfName='oem18.inf'"

(8)查詢類中所有對象的HardwareID和DriverVersion屬性,并且對象的HardwareID必須是以Monitor開頭,以IBM254D結尾,而且之間只有一個任意的字符,或者滿足InfName是oem18.inf
connectString = "SELECT HardwareID, DriverVersion FROM Win32_PnPSignedDriver WHERE HardwareID like 'Monitor_IBM254D' OR InfName='oem18.inf'"

5 參考資料和工具

WMI Reference:http://msdn2.microsoft.com/en-us/library/aa394572.aspx
WMI Tools:http://www.microsoft.com/downloads/details.aspx?familyid=6430f853-1120-48db-8cc5-f2abdc3ed314&displaylang=en
WQL Query:http://www.microsoft.com/china/technet/community/scriptcenter/topics/win2003/like.mspx#EIB

延伸 · 閱讀

精彩推薦
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
主站蜘蛛池模板: 色偷偷影院 | 亚洲精品久久啪啪网站成年 | 日韩精品中文字幕久久 | 日本一区二区三区视频在线观看 | 国产午夜亚洲精品不卡 | 极品丝袜老师h系列全文阅读 | 成免费视频 | 国产乱码一卡二卡3卡四卡 国产乱插 | 2020韩国三级理论在线观看 | 亚洲福利视频在线观看 | 欧美精品综合一区二区三区 | 国产嘿咻 | 免费看3d小舞被躁视频网站 | 蘑菇香蕉茄子绿巨人丝瓜草莓 | 色婷婷综合缴情综六月 | 俄罗斯激情性孕妇孕交大全 | 5g影院天天5g爽天天看 | 亚洲精品国产精品国自产观看 | 亚洲精品www久久久久久久软件 | 午夜一区二区福利视频在线 | 国产精品毛片高清在线完整版 | 继的朋友无遮漫画免费观看73 | 2020国产精品亚洲综合网 | 亚洲视频在线观看免费 | 国产精亚洲视频 | 好男人社区www影院在线观看 | 91久久碰国产 | 欧美人与禽杂交大片 | 2020韩国r级理论片在线观看 | 日韩在线视频免费观看 | 深夜成人 | 青青国产精品 | 日韩在线视精品在亚洲 | 国产精品午夜国产小视频 | 欧美精品久久久久久久影视 | 美女裆部 | 999资源站 | 海角社区在线登录 | 午夜欧美精品久久久久久久 | 91制片在线观看 | 奇米影视小说 |