激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C# - 利用C#操作WMI指南

利用C#操作WMI指南

2021-12-10 14:41C#教程網(wǎng) C#

WMI提供了一套內(nèi)置在Microsoft Windows操作系統(tǒng)中的豐富的系統(tǒng)管理服務(wù),可以在有大量的應(yīng)用程序、服務(wù)和設(shè)備的系統(tǒng)中提供全方位的管理功能。它允許應(yīng)用程序的開發(fā)者,使用簡(jiǎn)單的、一致的機(jī)制,去查詢企業(yè)中的任一臺(tái)計(jì)算機(jī)上的

1 什么是WMI?

Windows Management Instrumentation (WMI)是可伸縮的系統(tǒng)管理結(jié)構(gòu),該規(guī)范采用一個(gè)統(tǒng)一、基于標(biāo)準(zhǔn)且可擴(kuò)展的面向?qū)ο蠼涌凇K峁┡c系統(tǒng)管理員信息和基礎(chǔ)WMI API交互的標(biāo)準(zhǔn)方法,主要由系統(tǒng)管理應(yīng)用程序開發(fā)人員和系統(tǒng)管理員用來(lái)訪問和操作系統(tǒng)管理信息;它可用來(lái)生成組織和管理系統(tǒng)信息的工具,使系統(tǒng)管理人員能夠更密切的監(jiān)視系統(tǒng)活動(dòng)。

WMI提供了一套內(nèi)置在Microsoft Windows操作系統(tǒng)中的豐富的系統(tǒng)管理服務(wù),可以在有大量的應(yīng)用程序、服務(wù)和設(shè)備的系統(tǒng)中提供全方位的管理功能。它允許應(yīng)用程序的開發(fā)者,使用簡(jiǎn)單的、一致的機(jī)制,去查詢企業(yè)中的任一臺(tái)計(jì)算機(jī)上的信息,或是進(jìn)行系統(tǒng)配置。

通過WMI接口可以獲得的信息量是驚人的,包括硬件設(shè)置,狀態(tài)信息,驅(qū)動(dòng)器配置,BIOS信息,應(yīng)用程序的設(shè)置,事件記錄信息,以及其他。WMI通過一組API來(lái)獲得信息,但它表征的是一種通過一個(gè)簡(jiǎn)單,工業(yè)標(biāo)準(zhǔn)對(duì)象管理模式來(lái)獲取信息的函數(shù)。這使得應(yīng)用程序的開發(fā)者不必學(xué)習(xí)Windows的每一個(gè)API的具體細(xì)節(jié)。

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

using System.Management;

2 使用WMI連接遠(yuǎn)程計(jì)算機(jī)

系統(tǒng)管理員可以通過目標(biāo)機(jī)器的機(jī)器名(或者IP地址),用戶名以及密碼去查詢遠(yuǎn)程計(jì)算機(jī)的狀態(tài)和信息,以及利用腳本執(zhí)行一些管理工作。利用WMI連接遠(yuǎn)程計(jì)算機(jī)是很方便的,可以參考下面的格式

?
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"; //連接的目標(biāo)機(jī)的IP地址或者機(jī)器名
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地址,用戶名和密碼就建立了一個(gè)可以查詢Win32_PnPSignedDrvier這個(gè)類(關(guān)于這個(gè)類的詳細(xì)信息請(qǐng)查詢MSDN)所有信息的連接。現(xiàn)在我們就可以遠(yuǎn)程獲取目標(biāo)機(jī)器上的所有Pnp驅(qū)動(dòng)的信息了。是不是很方便?在得到所有的信息后,我們可以通過下面的兩種方式來(lái)獲取我們需要的屬性

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

3 使用WMI連接本地計(jì)算機(jī)

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

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

也可以用比較簡(jiǎn)單的格式,直接使用查詢語(yǔ)句。

?
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 查詢語(yǔ)句的格式

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

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

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

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

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

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

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

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

(8)查詢類中所有對(duì)象的HardwareID和DriverVersion屬性,并且對(duì)象的HardwareID必須是以Monitor開頭,以IBM254D結(jié)尾,而且之間只有一個(gè)任意的字符,或者滿足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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜精品成人一区二区 | 亚洲精品 欧美 | 91av大片| 欧洲亚洲激情 | 最新国产毛片 | 久久蜜桃香蕉精品一区二区三区 | 一区二区三区在线视频观看58 | 在线观看中文字幕国产 | 精品国产乱码一区二区三区四区 | 国产精品久久久乱弄 | 久久经典国产视频 | 日韩中文字幕一区二区三区 | 日韩在线激情 | 国产精品成人一区二区三区电影毛片 | 久久精品亚洲欧美日韩精品中文字幕 | aa级黄色片 | 正在播放91精 | free korean xxxxhd | 91在线视频精品 | porno video hd 365hd| 日本a级一区 | 成人爱情偷拍视频在线观看 | 91短视频在线播放 | 国产亚洲精品久久午夜玫瑰园 | 精品亚洲视频在线观看 | 高清国产午夜精品久久久久久 | 成人性视频免费网站下载软件 | 狠狠干夜夜操 | 国产午夜精品久久久久 | 国产精品91在线 | 久久久国产视频 | 欧美亚成人| 日本一道aⅴ不卡免费播放 日日草夜夜操 | 国产精品99久久久久久大便 | 久久久久久久久日本理论电影 | 黄色网址在线免费 | 中文字幕偷拍 | 久操免费在线视频 | 欧美成a人片在线观看久 | 五月天影院,久久综合, | 日日夜av |