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

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

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

2020-06-27 13:56:54
字體:
來源:轉載
供稿:網友

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

 

軟件名稱:
WMI代碼生成器(WMI Code Creator) 1.0 漢化綠色免費版
軟件大?。?/dt>
52KB
更新時間:
2018-04-24

 

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

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

WMI,代碼生成器,WMICodeCreator

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

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

WMI,代碼生成器,WMICodeCreator

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

WMI,代碼生成器,WMICodeCreator

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

WMI,代碼生成器,WMICodeCreator

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

WMI,代碼生成器,WMICodeCreator

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

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

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

WMI,代碼生成器,WMICodeCreator

如果通過常規手段在.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文件的引用,如下圖:

WMI,代碼生成器,WMICodeCreator

然后還需要在我們的程序開始處添加如下代碼: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;

        }

    }

}

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

WMI,代碼生成器,WMICodeCreator

最后說明:雖然絕大部分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
欧美自拍大量在线观看| 456国产精品| 欧美激情视频三区| 久久久久久com| 欧美激情啊啊啊| 欧美激情视频播放| 国内精品久久久久久久| 久久久av一区| 91超碰中文字幕久久精品| 亚洲激情在线观看| 懂色av影视一区二区三区| 2021久久精品国产99国产精品| 欧美野外猛男的大粗鳮| 亚洲黄色在线观看| 性日韩欧美在线视频| 亚洲欧美日韩高清| 91精品啪aⅴ在线观看国产| 国产成人啪精品视频免费网| 久久伊人91精品综合网站| 欧美大片免费看| 热久久美女精品天天吊色| 欧美激情一二三| 欧美高清视频在线观看| 国产综合久久久久| 欧美激情国产日韩精品一区18| 亚洲一区二区黄| 成人免费网站在线观看| 国产一区二区日韩精品欧美精品| 国产日韩换脸av一区在线观看| 午夜精品久久久久久99热| 麻豆国产精品va在线观看不卡| 国产成人一区二区| 97色在线观看免费视频| 国产精品视频自拍| 国产在线视频欧美| 亚洲成avwww人| 日韩欧美一区二区三区久久| 中文字幕精品久久| 丁香五六月婷婷久久激情| 中文字幕综合在线| 国产欧美一区二区白浆黑人| 色一区av在线| 热久久美女精品天天吊色| 少妇av一区二区三区| 国产精品999999| 亚洲理论在线a中文字幕| 亚洲欧美日韩综合| 欧美激情xxxxx| 尤物精品国产第一福利三区| 7m第一福利500精品视频| 日韩中文字幕免费| 精品欧美激情精品一区| 成人午夜在线视频一区| 91精品久久久久久久| 国外成人在线播放| 久久久精品国产| 中文字幕欧美日韩精品| 综合久久五月天| 国产精品久久久久久久久免费看| 琪琪亚洲精品午夜在线| 国产69精品久久久久99| 欧美中文字幕在线观看| 久久免费精品日本久久中文字幕| 亚洲视频精品在线| 91中文字幕在线| 精品福利一区二区| 中文字幕日韩电影| 久久精品影视伊人网| 国产精品美乳在线观看| 91精品视频网站| 精品久久久精品| 亚洲欧美制服另类日韩| 福利微拍一区二区| 久久久久久久久久久久av| 欧美黄色片在线观看| 国产精品免费久久久| 日本伊人精品一区二区三区介绍| 精品成人乱色一区二区| 性欧美长视频免费观看不卡| 久久久在线免费观看| 欧美视频一二三| 中文字幕最新精品| 欧美一区二粉嫩精品国产一线天| 51色欧美片视频在线观看| 亚洲美女视频网| 欧美日韩国产丝袜美女| 91精品综合久久久久久五月天| 韩国欧美亚洲国产| 91国自产精品中文字幕亚洲| 日韩电视剧免费观看网站| 精品毛片网大全| 久久精品国产视频| 91久久国产婷婷一区二区| 亚洲r级在线观看| 国产在线拍偷自揄拍精品| 亚洲第一网站免费视频| 欧美另类高清videos| 日韩精品极品在线观看| 亚洲精品美女在线观看播放| 久久天天躁日日躁| 91chinesevideo永久地址| 日韩美女视频在线观看| 亚洲欧美一区二区三区四区| 日韩av电影手机在线观看| 亚洲欧洲视频在线| 亚洲国产日韩欧美综合久久| 成人国产精品日本在线| 日韩福利视频在线观看| 欧美成人精品激情在线观看| 日韩免费观看高清| 亚洲国产精品成人一区二区| 红桃av永久久久| 亚洲深夜福利视频| 日韩成人在线电影网| 亚洲肉体裸体xxxx137| 亚洲加勒比久久88色综合| 精品久久香蕉国产线看观看亚洲| 亚洲日韩欧美视频一区| 91日本在线观看| 成人精品视频久久久久| 国产精品无av码在线观看| 精品福利在线看| 久久精品在线播放| 亚洲第一区在线| 色妞在线综合亚洲欧美| 成人欧美一区二区三区在线湿哒哒| 国产精品视频网址| 亚洲福利视频二区| 最近2019中文免费高清视频观看www99| 国产日韩欧美中文| 亚洲第一色中文字幕| 久久这里有精品视频| 欧美中文在线观看国产| 日本欧美国产在线| 国产一区二区美女视频| 少妇激情综合网| 亚洲欧美一区二区三区情侣bbw| 国产欧美日韩高清| 欧美日韩人人澡狠狠躁视频| 欧美精品激情blacked18| 中文字幕久久精品| 久久人人爽人人爽人人片亚洲| 中文字幕在线亚洲| 亚洲人成在线观看| 亚洲一区二区少妇| 一本久久综合亚洲鲁鲁| 欧美夜福利tv在线| 91久久精品一区| www.欧美精品一二三区| 久久久精品欧美| 亚洲男人第一网站| 亚洲美女在线看| 午夜免费日韩视频| 中文字幕视频在线免费欧美日韩综合在线看| 欧美理论在线观看| 午夜精品一区二区三区在线| 欧美黑人xxxⅹ高潮交| 欧美亚洲成人免费| 国产精品成人一区二区三区吃奶| 亚洲性69xxxbbb| 伊人一区二区三区久久精品| 国产亚洲欧美视频| 国产98色在线| 人人澡人人澡人人看欧美|