最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用C#操作WMI指南

 更新時間:2016年11月30日 23:54:09   投稿:mdxy-dxy  
WMI提供了一套內置在Microsoft Windows操作系統(tǒng)中的豐富的系統(tǒng)管理服務,可以在有大量的應用程序、服務和設備的系統(tǒng)中提供全方位的管理功能。它允許應用程序的開發(fā)者,使用簡單的、一致的機制,去查詢企業(yè)中的任一臺計算機上的信息,或是進行系統(tǒng)配置

1 什么是WMI?

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

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

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

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

using System.Management;

2 使用WMI連接遠程計算機

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

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)所有信息的連接?,F(xiàn)在我們就可以遠程獲取目標機器上的所有Pnp驅動的信息了。是不是很方便?在得到所有的信息后,我們可以通過下面的兩種方式來獲取我們需要的屬性

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連接本地計算機

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

string machineName = "localhost";
co.Username = "";
co.Password = "";

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

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)查詢系統(tǒng)中類中所有對象的所有屬性
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#實現(xiàn)身份證號碼驗證的方法

    C#實現(xiàn)身份證號碼驗證的方法

    這篇文章主要介紹了C#實現(xiàn)身份證號碼驗證的方法,通過封裝的類文件實例化調用實現(xiàn)了對身份證號碼的驗證,是非常實用的技巧,需要的朋友可以參考下
    2014-11-11
  • C#?將數(shù)據(jù)庫SqlServer數(shù)據(jù)綁定到類中的過程詳解

    C#?將數(shù)據(jù)庫SqlServer數(shù)據(jù)綁定到類中的過程詳解

    本文講述的是讀取數(shù)據(jù)庫中數(shù)據(jù)的常用做法,即將數(shù)據(jù)庫中的數(shù)據(jù)綁定到創(chuàng)建的類中,再將類綁定到DataGridView的數(shù)據(jù)源中的做法,對C#將SqlServer數(shù)據(jù)綁定到類中感興趣的朋友一起看看吧
    2022-06-06
  • WPF基于物理像素繪制圖形

    WPF基于物理像素繪制圖形

    這篇文章介紹了WPF基于物理像素繪制圖形的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 探討C#中Dispose方法與Close方法的區(qū)別詳解

    探討C#中Dispose方法與Close方法的區(qū)別詳解

    本篇文章是對C#中Dispose方法與Close方法的區(qū)別進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • C#中的矩形數(shù)組(多維數(shù)組)和鋸齒數(shù)組的實現(xiàn)

    C#中的矩形數(shù)組(多維數(shù)組)和鋸齒數(shù)組的實現(xiàn)

    本文主要介紹了C#中的矩形數(shù)組(多維數(shù)組)和鋸齒數(shù)組的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 一個可攜帶附加消息的增強消息框MessageBoxEx

    一個可攜帶附加消息的增強消息框MessageBoxEx

    一個可攜帶附加消息的增強消息框MessageBoxEx分享給大家,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Unity實現(xiàn)簡單換裝系統(tǒng)

    Unity實現(xiàn)簡單換裝系統(tǒng)

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)簡單換裝系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C#實現(xiàn)winform漸變效果的方法

    C#實現(xiàn)winform漸變效果的方法

    這篇文章主要介紹了C#實現(xiàn)winform漸變效果的方法,涉及到窗體的設計與屬性的修改等技巧,需要的朋友可以參考下
    2014-10-10
  • C#多線程之線程同步WaitHandle

    C#多線程之線程同步WaitHandle

    這篇文章介紹了C#多線程之線程同步WaitHandle的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C# GUID ToString的使用總結

    C# GUID ToString的使用總結

    這篇文章主要介紹了C# GUID ToString的使用總結,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-02-02

最新評論

山东| 明光市| 广平县| 平凉市| 东兴市| 陇西县| 共和县| 会泽县| 根河市| 阳信县| 雷波县| 洛南县| 郸城县| 且末县| 平顺县| 曲靖市| 威远县| 江阴市| 肇源县| 揭西县| 宁强县| 肥城市| 乐亭县| 南开区| 商丘市| 通榆县| 玛曲县| 奎屯市| 孟津县| 资阳市| 罗田县| 武功县| 定结县| 金门县| 乌拉特中旗| 东乡族自治县| 凯里市| 即墨市| 金门县| 吉水县| 鲁山县|