亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 編程設計 > 正文

WMI代碼生成器怎么使用 WMI Code Creator使用詳細圖文教程

2020-07-14 12:52:54
字體:
來源:轉載
供稿:網友

WMI是一種輕松獲取系統信息的強大工具。利用它但是由于缺少WMI的介紹資料和學習資料(特別是中文的,因為國內大部分程序員的E文水平都比較湊合,呵呵,本人也是相當湊合),所以知道WMI的不多,能運用的就少之又少了。

WMI Code Creator是微軟提供的一個WMI代碼生成工具,這篇文章主要是介紹WMI Code Creator的用法的。首先說明這個軟件是在.net Framework 2.0下編譯的,所以在運行軟件是需要.net Framework 2.0支持。

WMI代碼生成器的界面如下:

利用WMI代碼生成器可以執行查詢或者執行一個方法等,還可以查看當前或者遠程電腦上的命名空間以及其下的類,并且還可以生成相關的代碼(不然就不叫WMI代碼生成器了),支持生成的代碼類型包括VBS、C#及VB.NET,默認生成的代碼是VBS。

例如要想查詢BIOS的相關信息,可以在命名空間處選擇root/CIMV2(這個是默認選擇),然后在全部類處選擇Win32_BIOS,這時就會列出Win32_BIOS類的所有屬性,可以選擇其中一個屬性然后點擊“查詢屬性值”,就會在下面的文本框中列出該屬性的值,如下圖所示:

從上圖中可以看出本人的本本BIOS是DELL的,在右側生成代碼處可以看到相關的VBS代碼,如果看默認生成的VBS代碼不爽可以換成C#或者VB.NET的,具體操作就是在“編程語言”菜單處選擇,如下圖所示:

下面是選擇目標編程語言為C#后生成的代碼,如下圖所示:

WMI代碼生成器默認是連接到本地機器,不過也提供了連接遠程主機或者主機組的功能,這個可以在目標機器中選擇。如下圖所示。

由于本人已經將常用操作部分漢化了(可能不是十分準確),所以操作起來相對較容易上手。

說明:由于在后臺多處使用了線程池來進行操作,所以在執行一些耗時的操作而沒有等待完全結束退出軟件時會報異常。另外,在漢化的過程中有些不常用部分并沒有完全漢化,并且有些地方翻譯不是十分準確,敬請原諒,使用本軟件時結果僅供參考。如果您的英語足夠好建議您到微軟英文官方網站下載英文的代碼并自行編譯(整個軟件全部包含在一個cs文件中,需要在命令行下編譯),本軟件僅僅為那些英語不十分過關的朋友提供一些小小的幫助。

.net中的WMI編程實例:

在WMI中有一種查詢語言,類似于SQL語言,這種語言叫做WQL(WMI Query Language),實際上是標準SQL的一個子集加上了WMI的擴展。在接下來的教程中我會給大家演示一些WQL的例子。

用js或者vbs都可以通過WMI來獲取系統信息。下面是一個用vbs編寫的獲取系統序列號的小程序,你可以把它復制到一個文本文件里,然后保存為文件為.vbs的文件,然后運行:

Set SNSet = GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem")

for each SN in SNSet

 MsgBox "當前操作系統的序列號是: " & SN.SerialNumber

這是在我的機子上運行的結果:

如果通過常規手段在.net里讓你寫這個方法不知道你需要多少行代碼?需要利用幾次搜索引擎?一會我將展示如何在.net里利用WMI獲取操作系統序列號。

其實在.net里是支持WMI編程的,在.net類庫里專門有一個System.Management 命名空間,MSDN介紹這個命名空間如下:

“提供對大量管理信息和管理事件集合的訪問,這些信息和事件是與根據 Windows 管理規范 (WMI) 結構對系統、設備和應用程序設置檢測點有關的。應用程序和服務可以使用從 ManagementObjectSearcher 和 ManagementQuery 派生的類,查詢感興趣的管理信息(例如在磁盤上還剩多少可用空間、當前 CPU 利用率是多少、某一應用程序正連接到哪一數據庫等等);或者應用程序和服務可以使用 ManagementEventWatcher 類預訂各種管理事件。這些可訪問的數據可以來自分布式環境中托管的和非托管的組件。”。

System.Management 命名空間包含了下面一些常用類:

◆ManagementObject 或 ManagementClass:分別為單個管理對象或類。   

◆ManagementObjectSearcher:用于根據指定的查詢或枚舉檢索 ManagementObject 或 ManagementClass 對象的集合。   

◆ManagementEventWatcher:用于預訂來自 WMI 的事件通知。   

◆ManagementQuery:用作所有查詢類的基礎。

在實際編程中需要注意,System.Management 命名空間中的類都存在于System.Management .dll這個文件中,所以在編程的時候一定要添加對這個dll文件的引用,如下圖:

然后還需要在我們的程序開始處添加如下代碼:System.Management,這樣我們采用使用這個命名空間下的類來進行WMI編程。

下面我將用一個方法展示我剛才提到的如何在.net里獲取操作系統序列號:

        /// <summary>

        /// 獲取操作系統序列號

        /// </summary>

        /// <returns></returns>

        public string GetSerialNumber()

        {

            string result = "";

            ManagementClass mClass = new ManagementClass("Win32_OperatingSystem");

            ManagementObjectCollection moCollection = mClass.GetInstances();

            foreach (ManagementObject mObject in moCollection)

            {

                result += mObject["SerialNumber"].ToString();

            }

            return result;

        }

我想這個方法夠簡單的了。

下面貼出一些常用的方法來獲取系統相關的信息,代碼如下:

using System;

using System.Collections.Generic;

using System.Text;

namespace WMIDemo

{

    /// <summary>

    /// 說明:這個類很簡單,主要包含一個Main方法

    /// 作者:周公

    /// 日期:2008-1-14

    /// 首發地址:http://blog.csdn.net/zhoufoxcn

    /// </summary>

    class Program

    {

        static void Main(string[] args)

        {

            GetSystemInfo getInfo = new GetSystemInfo();

            Console.WriteLine("序列號="+getInfo.GetSerialNumber());

            Console.WriteLine("CPU編號=" + getInfo.GetCpuID());

            Console.WriteLine("硬盤編號=" + getInfo.GetMainHardDiskId());

            Console.WriteLine("主板編號=" + getInfo.GetMainBoardId());

            Console.WriteLine("網卡編號=" + getInfo.GetNetworkAdapterId());

            Console.WriteLine("用戶組=" + getInfo.GetGroupName());

            Console.WriteLine("驅動器情況=" + getInfo.GetDriverInfo());

            Console.ReadLine();

        }

    }

}

由于是一個命令行程序,所以有上面那個類,下面這個類才包含我要展示的代碼:

using System;

using System.Collections.Generic;

using System.Text;

using System.Management;

namespace WMIDemo

{

    /// <summary>

    /// 說明:這個類主要用來展示如何利用WMI來獲取一些操作系統的信息

    /// 作者:周公

    /// 時間:2008-1-14

    /// 首發地址:http://blog.csdn.net/zhoufoxcn

    /// </summary>

    public class GetSystemInfo

    {

        /// <summary>

        /// 獲取操作系統序列號

        /// </summary>

        /// <returns></returns>

        public string GetSerialNumber()

        {

            string result = "";

            ManagementClass mClass = new ManagementClass("Win32_OperatingSystem");

            ManagementObjectCollection moCollection = mClass.GetInstances();

            foreach (ManagementObject mObject in moCollection)

            {

                result += mObject["SerialNumber"].ToString() + " ";

            }

            return result;

        }

        /// <summary>

        /// 查詢CPU編號

        /// </summary>

        /// <returns></returns>

        public string GetCpuID()

        {

            string result = "";

            ManagementClass mClass = new ManagementClass("Win32_Processor");

            ManagementObjectCollection moCollection = mClass.GetInstances();

            foreach (ManagementObject mObject in moCollection)

            {

                result += mObject["ProcessorId"].ToString() + " ";

            }

            return result;

        }

        /// <summary>

        /// 查詢硬盤編號

        /// </summary>

        /// <returns></returns>

        public string GetMainHardDiskId()

        {

            string result = "";

            ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");

            ManagementObjectCollection moCollection = searcher.Get();

            foreach (ManagementObject mObject in moCollection)

            {

                result += mObject["SerialNumber"].ToString() + " ";

            }

            return result;

        }

        /// <summary>

        /// 主板編號

        /// </summary>

        /// <returns></returns>

        public string GetMainBoardId()

        {

            string result = "";

            ManagementObjectSearcher searcher = new ManagementObjectSearcher("root/CIMV2",

                    "SELECT * FROM Win32_BaseBoard");

            ManagementObjectCollection moCollection = searcher.Get();

            foreach (ManagementObject mObject in moCollection)

            {

                result += mObject["SerialNumber"].ToString() + " ";

            }

            return result;

        }

        /// <summary>

        /// 主板編號

        /// </summary>

        /// <returns></returns>

        public string GetNetworkAdapterId()

        {

            string result = "";

            ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT MACAddress FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL)AND (Manufacturer <> 'Microsoft'))");

            ManagementObjectCollection moCollection = searcher.Get();

            foreach (ManagementObject mObject in moCollection)

            {

                result += mObject["MACAddress"].ToString() + " ";

            }

            return result;

        }

        /// <summary>

        /// 主板編號

        /// </summary>

        /// <returns></returns>

        public string GetGroupName()

        {

            string result = "";

            ManagementObjectSearcher searcher = new ManagementObjectSearcher("root/CIMV2", "SELECT * FROM Win32_Group");

            ManagementObjectCollection moCollection = searcher.Get();

            foreach (ManagementObject mObject in moCollection)

            {

                result += mObject["Name"].ToString() + " ";

            }

            return result;

        }

        /// <summary>

        /// 獲取本地驅動器信息

        /// </summary>

        /// <returns></returns>

        public string GetDriverInfo()

        {

            string result = "";

            ManagementObjectSearcher searcher = new ManagementObjectSearcher("root/CIMV2", "SELECT * FROM Win32_LogicalDisk");

            ManagementObjectCollection moCollection = searcher.Get();

            foreach (ManagementObject mObject in moCollection)

            {

                //mObject["DriveType"]共有6中可能值,分別代表如下意義:

                //1:No type   2:Floppy disk   3:Hard disk

                //4:Removable drive or network drive   5:CD-ROM   6:RAM disk

                //本處只列出固定驅動器(硬盤分區)的情況

                if (mObject["DriveType"].ToString() == "3")

                {

                    result += string.Format("Name={0},FileSystem={1},Size={2},FreeSpace={3} ", mObject["Name"].ToString(),

                        mObject["FileSystem"].ToString(), mObject["Size"].ToString(), mObject["FreeSpace"].ToString());

                }

            }

            return result;

        }

    }

}

程序的運行結果如下(不同機器上的結果會不相同):

最后說明:雖然絕大部分Windows操作系統已經安裝了WMI(根據微軟官方說法是自WinME以后的Windows系統包括WinME都安裝了),但是不能保證上面的代碼能在所有的Windows操作系統之上,如Win95之類,如果在不支持WMI的Windows系統上運行WMI,那么需要從MSDN下載WMI。

另外,運行WMI需要當前Windows登錄用戶有一定的權限,由于本人開發時是以管理員的身份登錄并運行程序的,所以沒有權限異常提示,但是我不保證代碼在你處運行也正常,特別是在WebForm的環境下,因為asp.net程序默認是較低的權限運行的(安全原因)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美一区二区激情| 国产精品成人一区二区三区吃奶| 亚洲一级一级97网| 日韩精品在线观| 国产女人18毛片水18精品| 久久韩剧网电视剧| 欧美精品激情blacked18| 欧美午夜精品久久久久久人妖| 亚洲网在线观看| 超碰97人人做人人爱少妇| 91在线视频一区| 亚洲午夜未满十八勿入免费观看全集| 亚洲在线一区二区| 久久久久国产精品免费| 欧美日韩国内自拍| 亚洲第一精品电影| 亚洲www在线| 国产激情999| 97在线观看免费高清| 欧美极品在线播放| 亚洲少妇激情视频| 国产精品日韩在线播放| 亚洲精品视频播放| 国产区精品视频| 日韩av中文在线| 97成人精品区在线播放| 日韩免费在线播放| 国产精品伦子伦免费视频| 亚洲精品电影久久久| 精品视频久久久| 亚洲精品aⅴ中文字幕乱码| 美女撒尿一区二区三区| 国产91精品黑色丝袜高跟鞋| 91免费国产视频| 欧美日韩国产一区在线| 欧美国产视频一区二区| 亚洲第一网站男人都懂| 欧美激情综合色综合啪啪五月| 久久精品国产电影| 成人黄色大片在线免费观看| 亚洲人成网站777色婷婷| 亚洲天堂免费观看| 伊人男人综合视频网| 欧美午夜精品久久久久久久| 粉嫩老牛aⅴ一区二区三区| 午夜精品久久久99热福利| 久久九九热免费视频| 欧美电影《睫毛膏》| 欧美最近摘花xxxx摘花| 国产精品99免视看9| 国产精品夜间视频香蕉| 欧美精品精品精品精品免费| 亚洲精品videossex少妇| 中文字幕亚洲一区| 最近2019好看的中文字幕免费| 久久精品人人爽| 精品久久久久久久久久国产| 欧美电影免费观看高清完整| 国产精品一区二区三区毛片淫片| 永久555www成人免费| 国产在线精品成人一区二区三区| 国产成人一区二区三区小说| 亚洲视频电影图片偷拍一区| 欧美激情按摩在线| 欧美一区二区三区艳史| 成人激情视频在线播放| 国内精品美女av在线播放| 精品久久久久久国产| 免费91在线视频| 一本大道久久加勒比香蕉| 国产精品2018| 在线观看精品自拍私拍| 国产一区深夜福利| 欧美性猛交xxxx富婆弯腰| 亚洲精品大尺度| 这里精品视频免费| 欧美日韩一区二区在线| 欧美激情亚洲一区| 91美女片黄在线观看游戏| 日韩免费视频在线观看| 成人黄色av播放免费| 日本久久久久亚洲中字幕| 国产午夜精品视频免费不卡69堂| 68精品久久久久久欧美| 狠狠躁夜夜躁久久躁别揉| 久久亚洲成人精品| 亚洲乱码国产乱码精品精天堂| 亚洲第一精品福利| 亚洲欧美中文日韩在线v日本| 深夜福利91大全| 欧美美女18p| 国产精品欧美在线| 在线亚洲欧美视频| 欧美性xxxx在线播放| 亚洲精美色品网站| 精品无人国产偷自产在线| 欧美黑人视频一区| 亚洲直播在线一区| 欧美精品久久久久久久久| 91免费国产视频| 51视频国产精品一区二区| 98精品在线视频| 亚洲一区av在线播放| 麻豆乱码国产一区二区三区| 亚洲午夜未满十八勿入免费观看全集| 欧美亚洲视频一区二区| 欧美精品www在线观看| 26uuu国产精品视频| 久久99精品视频一区97| 久久夜色精品国产亚洲aⅴ| 欧美日韩福利视频| 亚洲欧美国产制服动漫| 亚洲精品欧美日韩专区| 国产精品日日做人人爱| 久久精品国产亚洲| 国产欧美一区二区三区四区| 日韩在线观看成人| 国产视频精品自拍| 久久久久久伊人| 国产成人精品视频| 色99之美女主播在线视频| 久久乐国产精品| 日韩乱码在线视频| 中文字幕亚洲综合久久| 91免费精品国偷自产在线| 亚洲大胆人体视频| 国产自产女人91一区在线观看| 久久精品国亚洲| 亚洲精品国产精品国自产在线| 亚洲国产精品va在线看黑人动漫| 91精品久久久久久久久青青| 97精品伊人久久久大香线蕉| 久久久电影免费观看完整版| 欧美亚洲视频一区二区| 久久久久亚洲精品成人网小说| 日韩在线视频线视频免费网站| 国产欧美一区二区三区在线看| 午夜精品在线视频| 欧美精品激情视频| 夜夜嗨av一区二区三区免费区| 日本一区二区在线免费播放| 亚洲人精选亚洲人成在线| www.亚洲天堂| 久久伊人91精品综合网站| 91在线观看免费网站| 久久激情五月丁香伊人| 日韩精品免费观看| 韩国视频理论视频久久| 亚洲人成绝费网站色www| 日韩中文字幕视频在线观看| 国产精品一区二区三区久久久| 欧美激情videos| 日韩精品免费一线在线观看| 2023亚洲男人天堂| 亚洲97在线观看| 日韩高清电影免费观看完整版| 中文字幕在线看视频国产欧美在线看完整| 成人免费高清完整版在线观看| 日韩欧美亚洲成人| 欧美夫妻性视频| 欧美激情视频在线| 日韩美女福利视频| 亚洲午夜女主播在线直播| www.99久久热国产日韩欧美.com|