WMI 基础知识 及获取机器码的类

http://baike.baidu.com/view/442461.htm

WMI 最初于1998年作为一个附加组件与 Windows NT 4.0 Service Pack 4 一起发行,是内置在Windows 2000、 Windows XP和Windows Server 2003 系列操作系统中核心的管理支持技术。基于由 Distributed Management Task Force (DMTF) 所监督的业界标准,WMI是一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的Windows资源。大多用户习惯于使用众多的图形化管理工具来管理Windows资源,在WMI之前这些工具都是通过 Win32应用程序编程接口(Application ProgrammingInterfaces,API)来访问和管理Windows资源的。只要你熟悉系统编程你就知道API有多么重要。但是大多数脚本语言都不能直接调用Win32 API,WMI的出现使得系统管理员可以通过一种简便的方法即利用常见的脚本语言实现常用的系统管理任务。  
利用WMI需要和脚本如WSH和VBScript结合起来,可以实现的功能大家可以看微软的MSDN文档。  
在编写我们自己的脚本之前,我们需要对WMI的体系结构有个基本的了解。如图一:(1.gif)  
在WMI 体系结构中我们最需要关心的就是WMI提供程序,WMI提供程序在WMI和托管资源之间扮演着中间方的角色。提供程序代表使用者应用程序和脚本从WMI托管资源请求信息,并发送指令到WMI托管资源。下面是我们利用WMI编程经常要用到的WMI内置提供程序清单,以供编程参考。  
1.Active Directory提供程序  
链接库文件:dsprov.dll  
命名空间:root\directory\ldap  
作用:将Active Directory 对象映射到 WMI。  

2.事件日志提供程序  
链接库文件:ntevt.dll  
命名空间:root\cimv2  
作用:管理 Windows 事件日志,例如,读取、备份、清除、复制、删除、监视、重命名、压缩、解压缩和更改事件日志设置。  

3.注册表提供程序  
链接库文件:stdprov.dll  
命名空间:root\default  
作用:读取、写入、枚举、监视、创建、删除注册表项和值。  

4.Win32 提供程序  
链接库文件:cimwin32.dll  
命名空间:root\cimv2  
作用:提供关于计算机、磁盘、外围设备、文件、文件夹、文件系统、网络组件、操作系统、打印机、进程、安全性、服务、共享、SAM 用户及组,以及更多资源的信息。  

5.Windows 安装程序提供程序  
链接库文件:msiprov.dll  
命名空间:root\cimv2  
作用:提供对已安装软件信息的访问。  

从上面可以看出在WMI中类(即内置提供程序)被分组到命名空间中,命名空间可以看成是一个组。比如,命名空间 root\cimv2 包括大部分表示通常与计算机和操作系统相关联的资源的类。在使用类的时候要说明类所在的命名空间。类由属性和方法构成。这是可视化编程中的两个重要的概念。属性描述的是对象的状态,方法是对象可以执行的操作。 


代码:获取磁盘序列号、CPU ID、物理内存值等信息

using   System; 
using   System.Management;

namespace   HTSoft.Common.Register 
{ 
        ///   <summary>   
        ///   计算机信息类 
        ///   </summary>   
        internal   class   Computer 
        { 
                public   string   CpuID; 
                public   string   MacAddress; 
                public   string   DiskID; 
                public   string   IpAddress; 
                public   string   LoginUserName; 
                public   string   ComputerName; 
                public   string   SystemType; 
                public   string   TotalPhysicalMemory;   //单位:M   
                private   static   Computer   _instance; 

                internal   static   Computer   Instance() 
                { 
                        if   (_instance   ==   null) 
                                _instance   =   new   Computer(); 
                        return   _instance; 
                } 

                internal   Computer() 
                { 
                        CpuID   =   GetCpuID();  //CPUID
                        MacAddress   =   GetMacAddress(); //MAC地址 
                        DiskID   =   GetDiskID();  //磁盘序列号
                        IpAddress   =   GetIPAddress(); //ip地址
                        LoginUserName   =   GetUserName(); //用户名
                        SystemType   =   GetSystemType(); //系统类型
                        TotalPhysicalMemory   =   GetTotalPhysicalMemory(); //物理内存
                        ComputerName   =   GetComputerName(); //计算机名
                } 
                string   GetCpuID() 
                { 
                        try 
                        { 
                                //获取CPU序列号代码   
                                string   cpuInfo   =   " ";//cpu序列号   
                                ManagementClass   mc   =   new   ManagementClass( "Win32_Processor"); 
                                ManagementObjectCollection   moc   =   mc.GetInstances(); 
                                foreach   (ManagementObject   mo   in   moc) 
                                { 
                                        cpuInfo   =   mo.Properties[ "ProcessorId"].Value.ToString(); 
                                } 
                                moc   =   null; 
                                mc   =   null; 
                                return   cpuInfo; 
                        } 
                        catch 
                        { 
                                return   "unknow "; 
                        } 
                        finally 
                        { 
                        } 

                } 
                string   GetMacAddress() 
                { 
                        try 
                        { 
                                // 获取网卡硬件地址   
                                string   mac   =   " "; 
                                ManagementClass   mc   =   new   ManagementClass( "Win32_NetworkAdapterConfiguration"); 
                                ManagementObjectCollection   moc   =   mc.GetInstances(); 
                                foreach   (ManagementObject   mo   in   moc) 
                                { 
                                        if   ((bool)mo[ "IPEnabled"]   ==   true) 
                                        { 
                                                mac   =   mo[ "MacAddress"].ToString(); 
                                                break; 
                                        } 
                                } 
                                moc   =   null; 
                                mc   =   null; 
                                return   mac; 
                        } 
                        catch 
                        { 
                                return   "unknow "; 
                        } 
                        finally 
                        { 
                        } 

                } 
                string   GetIPAddress() 
                { 
                        try 
                        { 
                                //获取IP地址   
                                string   st   =   " "; 
                                ManagementClass   mc   =   new   ManagementClass( "Win32_NetworkAdapterConfiguration"); 
                                ManagementObjectCollection   moc   =   mc.GetInstances(); 
                                foreach   (ManagementObject   mo   in   moc) 
                                { 
                                        if   ((bool)mo[ "IPEnabled"]   ==   true) 
                                        { 
                                                //st=mo[ "IpAddress "].ToString();   
                                                System.Array   ar; 
                                                ar   =   (System.Array)(mo.Properties[ "IpAddress"].Value); 
                                                st   =   ar.GetValue(0).ToString(); 
                                                break; 
                                        } 
                                } 
                                moc   =   null; 
                                mc   =   null; 
                                return   st; 
                        } 
                        catch 
                        { 
                                return   "unknow "; 
                        } 
                        finally 
                        { 
                        } 

                } 

                string   GetDiskID() 
                { 
                        try 
                        { 
                                //获取硬盘ID   
                                String   HDid   =   " "; 
                                ManagementClass   mc   =   new   ManagementClass( "Win32_DiskDrive"); 
                                ManagementObjectCollection   moc   =   mc.GetInstances(); 
                                foreach   (ManagementObject   mo   in   moc) 
                                { 
                                        HDid   =   (string)mo.Properties[ "Model"].Value; 
                                } 
                                moc   =   null; 
                                mc   =   null; 
                                return   HDid; 
                        } 
                        catch 
                        { 
                                return   "unknow "; 
                        } 
                        finally 
                        { 
                        } 

                } 

                ///   <summary>   
                ///   操作系统的登录用户名   
                ///   </summary>   
                ///   <returns> </returns>   
                string   GetUserName() 
                { 
                        try 
                        { 
                                string   st   =   " "; 
                                ManagementClass   mc   =   new   ManagementClass( "Win32_ComputerSystem"); 
                                ManagementObjectCollection   moc   =   mc.GetInstances(); 
                                foreach   (ManagementObject   mo   in   moc) 
                                { 

                                        st   =   mo[ "UserName"].ToString(); 

                                } 
                                moc   =   null; 
                                mc   =   null; 
                                return   st; 
                        } 
                        catch 
                        { 
                                return   "unknow "; 
                        } 
                        finally 
                        { 
                        } 

                } 


                ///   <summary>   
                ///   PC类型   
                ///   </summary>   
                ///   <returns> </returns>   
                string   GetSystemType() 
                { 
                        try 
                        { 
                                string   st   =   " "; 
                                ManagementClass   mc   =   new   ManagementClass( "Win32_ComputerSystem"); 
                                ManagementObjectCollection   moc   =   mc.GetInstances(); 
                                foreach   (ManagementObject   mo   in   moc) 
                                { 

                                        st   =   mo[ "SystemType"].ToString(); 

                                } 
                                moc   =   null; 
                                mc   =   null; 
                                return   st; 
                        } 
                        catch 
                        { 
                                return   "unknow "; 
                        } 
                        finally 
                        { 
                        } 

                } 

                ///   <summary>   
                ///   物理内存   
                ///   </summary>   
                ///   <returns> </returns>   
                string   GetTotalPhysicalMemory() 
                { 
                        try 
                        { 

                                string   st   =   " "; 
                                ManagementClass   mc   =   new   ManagementClass( "Win32_ComputerSystem"); 
                                ManagementObjectCollection   moc   =   mc.GetInstances(); 
                                foreach   (ManagementObject   mo   in   moc) 
                                { 

                                        st   =   mo[ "TotalPhysicalMemory"].ToString(); 

                                } 
                                moc   =   null; 
                                mc   =   null; 
                                return   st; 
                        } 
                        catch 
                        { 
                                return   "unknow "; 
                        } 
                        finally 
                        { 
                        } 
                } 
                ///   <summary>   
                ///     获取计算机名称 
                ///   </summary>   
                ///   <returns> </returns>   
                string   GetComputerName() 
                { 
                        try 
                        { 
                                return   System.Environment.GetEnvironmentVariable( "ComputerName"); 
                        } 
                        catch 
                        { 
                                return   "unknow "; 
                        } 
                        finally 
                        { 
                        } 
                } 
        } 
}

使用示例

            Computer myComputer = new Computer();
            textBox1.Text = myComputer.CpuID;
            textBox2.Text = myComputer.MacAddress;
            textBox3.Text = myComputer.DiskID;
            textBox4.Text = myComputer.IpAddress;
            textBox5.Text = myComputer.LoginUserName;
            textBox6.Text = myComputer.SystemType;
            textBox7.Text = myComputer.TotalPhysicalMemory;
            textBox8.Text = myComputer.ComputerName;


你可能感兴趣的:(windows,压缩,String,null,解压缩,textbox,操作系统相关)