WMI使用集锦
From:http://singlepine.cnblogs.com/articles/299457.html 

1.WMI简介
WMI是英文Windows Management Instrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等。
2.使用时首先添加System.Management.dll,然后引用
 using System.Management;
using System.Management;
 using System.Threading;
using System.Threading; 
3.示例代码
3.1 html代码
 <HTML>
<HTML>
 <HEAD>
    <HEAD>
 <title>WMITest</title>
        <title>WMITest</title>
 <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
 <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="CODE_LANGUAGE" Content="C#">
 <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_defaultClientScript" content="JavaScript">
 <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
 </HEAD>
    </HEAD>
 <body MS_POSITIONING="GridLayout">
    <body MS_POSITIONING="GridLayout">
 <form id="Form1" method="post" runat="server">
        <form id="Form1" method="post" runat="server">
 <FONT face="宋体">
            <FONT face="宋体">
 <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP: 16px" runat="server"
                <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP: 16px" runat="server"
 Text="获得本地磁盘的信息" Width="152px"></asp:Button>
                    Text="获得本地磁盘的信息" Width="152px"></asp:Button>
 <asp:Button id="Button2" style="Z-INDEX: 102; LEFT: 32px; POSITION: absolute; TOP: 56px" runat="server"
                <asp:Button id="Button2" style="Z-INDEX: 102; LEFT: 32px; POSITION: absolute; TOP: 56px" runat="server"
 Text="获得指定磁盘的容量" Width="144px"></asp:Button>
                    Text="获得指定磁盘的容量" Width="144px"></asp:Button>
 <asp:Button id="Button3" style="Z-INDEX: 103; LEFT: 32px; POSITION: absolute; TOP: 96px" runat="server"
                <asp:Button id="Button3" style="Z-INDEX: 103; LEFT: 32px; POSITION: absolute; TOP: 96px" runat="server"
 Text="列出机器中所有的共享资源" Width="192px"></asp:Button>
                    Text="列出机器中所有的共享资源" Width="192px"></asp:Button>
 <asp:Button id="Button4" style="Z-INDEX: 104; LEFT: 8px; POSITION: absolute; TOP: 128px" runat="server"
                <asp:Button id="Button4" style="Z-INDEX: 104; LEFT: 8px; POSITION: absolute; TOP: 128px" runat="server"
 Text="控制让系统中的某个文件夹共享或取消共享" Width="264px"></asp:Button>
                    Text="控制让系统中的某个文件夹共享或取消共享" Width="264px"></asp:Button>
 <asp:Button id="Button5" style="Z-INDEX: 105; LEFT: 48px; POSITION: absolute; TOP: 160px" runat="server"
                <asp:Button id="Button5" style="Z-INDEX: 105; LEFT: 48px; POSITION: absolute; TOP: 160px" runat="server"
 Text="获得系统服务的运行状态"></asp:Button>
                    Text="获得系统服务的运行状态"></asp:Button>
 <asp:Button id="Button6" style="Z-INDEX: 106; LEFT: 40px; POSITION: absolute; TOP: 192px" runat="server"
                <asp:Button id="Button6" style="Z-INDEX: 106; LEFT: 40px; POSITION: absolute; TOP: 192px" runat="server"
 Text="通过WMI修改IP,而实现不用重新启动" Width="248px"></asp:Button>
                    Text="通过WMI修改IP,而实现不用重新启动" Width="248px"></asp:Button>
 <asp:Button id="Button7" style="Z-INDEX: 107; LEFT: 24px; POSITION: absolute; TOP: 224px" runat="server"
                <asp:Button id="Button7" style="Z-INDEX: 107; LEFT: 24px; POSITION: absolute; TOP: 224px" runat="server"
 Text="如何利用WMI远程重启远程计算机" Width="232px"></asp:Button>
                    Text="如何利用WMI远程重启远程计算机" Width="232px"></asp:Button>
 <asp:Button id="Button8" style="Z-INDEX: 108; LEFT: 40px; POSITION: absolute; TOP: 264px" runat="server"
                <asp:Button id="Button8" style="Z-INDEX: 108; LEFT: 40px; POSITION: absolute; TOP: 264px" runat="server"
 Text="利用WMI创建一个新的进程" Width="192px"></asp:Button>
                    Text="利用WMI创建一个新的进程" Width="192px"></asp:Button>
 <asp:Button id="Button9" style="Z-INDEX: 109; LEFT: 32px; POSITION: absolute; TOP: 296px" runat="server"
                <asp:Button id="Button9" style="Z-INDEX: 109; LEFT: 32px; POSITION: absolute; TOP: 296px" runat="server"
 Text="如何通过WMI终止一个进程" Width="192px"></asp:Button>
                    Text="如何通过WMI终止一个进程" Width="192px"></asp:Button>
 <asp:Button id="Button10" style="Z-INDEX: 110; LEFT: 32px; POSITION: absolute; TOP: 328px" runat="server"
                <asp:Button id="Button10" style="Z-INDEX: 110; LEFT: 32px; POSITION: absolute; TOP: 328px" runat="server"
 Text="如何用WMI 来获取远程机器的目录以及文件" Width="280px"></asp:Button>
                    Text="如何用WMI 来获取远程机器的目录以及文件" Width="280px"></asp:Button>
 <asp:Button id="Button11" style="Z-INDEX: 111; LEFT: 424px; POSITION: absolute; TOP: 24px" runat="server"
                <asp:Button id="Button11" style="Z-INDEX: 111; LEFT: 424px; POSITION: absolute; TOP: 24px" runat="server"
 Text="网卡的MAC地址" Width="120px"></asp:Button>
                    Text="网卡的MAC地址" Width="120px"></asp:Button>
 <asp:Button id="Button12" style="Z-INDEX: 112; LEFT: 456px; POSITION: absolute; TOP: 64px" runat="server"
                <asp:Button id="Button12" style="Z-INDEX: 112; LEFT: 456px; POSITION: absolute; TOP: 64px" runat="server"
 Text="CPU的系列号 " Width="104px"></asp:Button>
                    Text="CPU的系列号 " Width="104px"></asp:Button>
 <asp:Button id="Button13" style="Z-INDEX: 113; LEFT: 448px; POSITION: absolute; TOP: 120px"
                <asp:Button id="Button13" style="Z-INDEX: 113; LEFT: 448px; POSITION: absolute; TOP: 120px"
 runat="server" Text="主板的系列号"></asp:Button>
                    runat="server" Text="主板的系列号"></asp:Button>
 <asp:Button id="Button14" style="Z-INDEX: 114; LEFT: 472px; POSITION: absolute; TOP: 160px"
                <asp:Button id="Button14" style="Z-INDEX: 114; LEFT: 472px; POSITION: absolute; TOP: 160px"
 runat="server" Text="获取硬盘ID"></asp:Button>
                    runat="server" Text="获取硬盘ID"></asp:Button>
 <asp:Button id="Button15" style="Z-INDEX: 115; LEFT: 448px; POSITION: absolute; TOP: 208px"
                <asp:Button id="Button15" style="Z-INDEX: 115; LEFT: 448px; POSITION: absolute; TOP: 208px"
 runat="server" Text="获取本机的用户列表" Width="144px"></asp:Button></FONT>
                    runat="server" Text="获取本机的用户列表" Width="144px"></asp:Button></FONT>
 </form>
        </form>
 </body>
    </body>
 </HTML>
</HTML>
3.2cs代码
 public class WMITest : System.Web.UI.Page
public class WMITest : System.Web.UI.Page
 {
    {
 protected System.Web.UI.WebControls.Button Button2;
        protected System.Web.UI.WebControls.Button Button2;
 protected System.Web.UI.WebControls.Button Button3;
        protected System.Web.UI.WebControls.Button Button3;
 protected System.Web.UI.WebControls.Button Button4;
        protected System.Web.UI.WebControls.Button Button4;
 protected System.Web.UI.WebControls.Button Button5;
        protected System.Web.UI.WebControls.Button Button5;
 protected System.Web.UI.WebControls.Button Button6;
        protected System.Web.UI.WebControls.Button Button6;
 protected System.Web.UI.WebControls.Button Button7;
        protected System.Web.UI.WebControls.Button Button7;
 protected System.Web.UI.WebControls.Button Button8;
        protected System.Web.UI.WebControls.Button Button8;
 protected System.Web.UI.WebControls.Button Button9;
        protected System.Web.UI.WebControls.Button Button9;
 protected System.Web.UI.WebControls.Button Button10;
        protected System.Web.UI.WebControls.Button Button10;
 protected System.Web.UI.WebControls.Button Button11;
        protected System.Web.UI.WebControls.Button Button11;
 protected System.Web.UI.WebControls.Button Button12;
        protected System.Web.UI.WebControls.Button Button12;
 protected System.Web.UI.WebControls.Button Button13;
        protected System.Web.UI.WebControls.Button Button13;
 protected System.Web.UI.WebControls.Button Button14;
        protected System.Web.UI.WebControls.Button Button14;
 protected System.Web.UI.WebControls.Button Button15;
        protected System.Web.UI.WebControls.Button Button15;
 protected System.Web.UI.WebControls.Button Button1;
        protected System.Web.UI.WebControls.Button Button1;
 
    
 private void Page_Load(object sender, System.EventArgs e)
        private void Page_Load(object sender, System.EventArgs e)
 {
        {
 // Put user code to initialize the page here
            // Put user code to initialize the page here
 }
        }

 Web Form Designer generated code#region Web Form Designer generated code
        Web Form Designer generated code#region Web Form Designer generated code
 override protected void OnInit(EventArgs e)
        override protected void OnInit(EventArgs e)
 {
        {
 //
            //
 // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
 //
            //
 InitializeComponent();
            InitializeComponent();
 base.OnInit(e);
            base.OnInit(e);
 }
        }
 
        
 /**//// <summary>
        /**//// <summary>
 /// Required method for Designer support - do not modify
        /// Required method for Designer support - do not modify
 /// the contents of this method with the code editor.
        /// the contents of this method with the code editor.
 /// </summary>
        /// </summary>
 private void InitializeComponent()
        private void InitializeComponent()
 {
        {    
 this.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
 this.Button2.Click += new System.EventHandler(this.Button2_Click);
            this.Button2.Click += new System.EventHandler(this.Button2_Click);
 this.Button3.Click += new System.EventHandler(this.Button3_Click);
            this.Button3.Click += new System.EventHandler(this.Button3_Click);
 this.Button4.Click += new System.EventHandler(this.Button4_Click);
            this.Button4.Click += new System.EventHandler(this.Button4_Click);
 this.Button5.Click += new System.EventHandler(this.Button5_Click);
            this.Button5.Click += new System.EventHandler(this.Button5_Click);
 this.Button6.Click += new System.EventHandler(this.Button6_Click);
            this.Button6.Click += new System.EventHandler(this.Button6_Click);
 this.Button7.Click += new System.EventHandler(this.Button7_Click);
            this.Button7.Click += new System.EventHandler(this.Button7_Click);
 this.Button8.Click += new System.EventHandler(this.Button8_Click);
            this.Button8.Click += new System.EventHandler(this.Button8_Click);
 this.Button9.Click += new System.EventHandler(this.Button9_Click);
            this.Button9.Click += new System.EventHandler(this.Button9_Click);
 this.Button10.Click += new System.EventHandler(this.Button10_Click);
            this.Button10.Click += new System.EventHandler(this.Button10_Click);
 this.Button11.Click += new System.EventHandler(this.Button11_Click);
            this.Button11.Click += new System.EventHandler(this.Button11_Click);
 this.Button12.Click += new System.EventHandler(this.Button12_Click);
            this.Button12.Click += new System.EventHandler(this.Button12_Click);
 this.Button13.Click += new System.EventHandler(this.Button13_Click);
            this.Button13.Click += new System.EventHandler(this.Button13_Click);
 this.Button14.Click += new System.EventHandler(this.Button14_Click);
            this.Button14.Click += new System.EventHandler(this.Button14_Click);
 this.Button15.Click += new System.EventHandler(this.Button15_Click);
            this.Button15.Click += new System.EventHandler(this.Button15_Click);
 this.Load += new System.EventHandler(this.Page_Load);
            this.Load += new System.EventHandler(this.Page_Load);

 }
        }
 #endregion
        #endregion

 1.如何用WMI获得指定磁盘的容量#region 1.如何用WMI获得指定磁盘的容量
        1.如何用WMI获得指定磁盘的容量#region 1.如何用WMI获得指定磁盘的容量
 private string DriveType(string type)
        private string DriveType(string type)
 {
        {
 string rtntype="";
            string rtntype="";
 switch (type)
            switch (type)
 {
            {
 case "1":
                case "1":
 rtntype="Not Type";
                    rtntype="Not Type";
 break;
                    break;
 case "2":
                case "2":
 rtntype="Floppy disk";
                    rtntype="Floppy disk";
 break;
                    break;
 case "3":
                case "3":
 rtntype="Hard disk";
                    rtntype="Hard disk";
 break;
                    break;
 case "4":
                case "4":
 rtntype="Removable drive or network drive";
                    rtntype="Removable drive or network drive";
 break;
                    break;
 case "5":
                case "5":
 rtntype="CD-ROM";
                    rtntype="CD-ROM";
 break;
                    break;
 case "6":
                case "6":
 rtntype="RAM disk";
                    rtntype="RAM disk";
 break;
                    break;
 default :
                default :
 break;
                    break;
 }
            }
 return rtntype;
            return rtntype;
 }
        }

 private void Button1_Click(object sender, System.EventArgs e)
        private void Button1_Click(object sender, System.EventArgs e)
 {
        {
 SelectQuery query=new SelectQuery("Select * From Win32_LogicalDisk");
            SelectQuery query=new SelectQuery("Select * From Win32_LogicalDisk"); 
 ManagementObjectSearcher searcher=new ManagementObjectSearcher(query);
            ManagementObjectSearcher searcher=new ManagementObjectSearcher(query); 
 foreach(ManagementBaseObject disk in searcher.Get())
            foreach(ManagementBaseObject disk in searcher.Get()) 
 {
            { 
 Response.Write(disk["Name"] +" "+DriveType(disk["DriveType"].ToString()) + " " + disk["VolumeName"]+"<br>");
                Response.Write(disk["Name"] +" "+DriveType(disk["DriveType"].ToString()) + " " + disk["VolumeName"]+"<br>"); 
 }
            }
 }
        }
 #endregion
        #endregion

 2.如何用WMI获得指定磁盘的容量#region 2.如何用WMI获得指定磁盘的容量
        2.如何用WMI获得指定磁盘的容量#region 2.如何用WMI获得指定磁盘的容量
 private void Button2_Click(object sender, System.EventArgs e)
        private void Button2_Click(object sender, System.EventArgs e)
 {
        {
 ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
            ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\""); 
 disk.Get();
            disk.Get(); 
 Response.Write("Logical Disk Size = " + disk["Size"] + " bytes");
            Response.Write("Logical Disk Size = " + disk["Size"] + " bytes");             
 }
        }
 #endregion
        #endregion

 3.如何列出机器中所有的共享资源#region 3.如何列出机器中所有的共享资源
        3.如何列出机器中所有的共享资源#region 3.如何列出机器中所有的共享资源
 private void Button3_Click(object sender, System.EventArgs e)
        private void Button3_Click(object sender, System.EventArgs e)
 {
        {
 ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_share");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_share"); 
 foreach (ManagementObject share in searcher.Get())
            foreach (ManagementObject share in searcher.Get()) 
 {
            { 
 Response.Write(share.GetText(TextFormat.Mof));
                Response.Write(share.GetText(TextFormat.Mof)); 
 }
            } 
 }
        }
 #endregion
        #endregion

 4.怎样写程控制让系统中的某个文件夹共享或取消共享#region 4.怎样写程控制让系统中的某个文件夹共享或取消共享
        4.怎样写程控制让系统中的某个文件夹共享或取消共享#region 4.怎样写程控制让系统中的某个文件夹共享或取消共享
 private void Button4_Click(object sender, System.EventArgs e)
        private void Button4_Click(object sender, System.EventArgs e)
 {
        {
 /**//*首先,这需要以有相应权限的用户登录系统才行
            /**//*首先,这需要以有相应权限的用户登录系统才行
 将
            将 
 object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""};
            object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""}; 
 改为
            改为 
 object[] obj = {"C:\\Temp","我的共享",0,null,"Dot Net 实现的共享",""};
            object[] obj = {"C:\\Temp","我的共享",0,null,"Dot Net 实现的共享",""}; 
 就可以实现授权给最多用户了。
            就可以实现授权给最多用户了。
 */
            */
 ManagementClass _class = new ManagementClass(new ManagementPath("Win32_Share"));
            ManagementClass _class = new ManagementClass(new ManagementPath("Win32_Share"));
 object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""};
            object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""};
 _class.InvokeMethod("create",obj);
            _class.InvokeMethod("create",obj); 
 }
        }
 #endregion
        #endregion

 5.如何获得系统服务的运行状态#region 5.如何获得系统服务的运行状态
        5.如何获得系统服务的运行状态#region 5.如何获得系统服务的运行状态
 private void Button5_Click(object sender, System.EventArgs e)
        private void Button5_Click(object sender, System.EventArgs e)
 {
        {
 string[] lvData =  new string[4];
            string[] lvData =  new string[4];            
 ManagementObjectSearcher searcher =new ManagementObjectSearcher("SELECT * FROM Win32_Service");
            ManagementObjectSearcher searcher =new ManagementObjectSearcher("SELECT * FROM Win32_Service"); 
 foreach (ManagementObject mo in searcher.Get())
            foreach (ManagementObject mo in searcher.Get()) 
 {
            { 
 lvData[0] = mo["Name"].ToString();
                lvData[0] = mo["Name"].ToString(); 
 lvData[1] = mo["StartMode"].ToString();
                lvData[1] = mo["StartMode"].ToString(); 
 if (mo["Started"].Equals(true))
                if (mo["Started"].Equals(true)) 
 lvData[2] = "Started";
                    lvData[2] = "Started"; 
 else
                else 
 lvData[2] = "Stop";
                    lvData[2] = "Stop"; 
 lvData[3] = mo["StartName"].ToString();
                lvData[3] = mo["StartName"].ToString(); 
 Response.Write(lvData[0]+lvData[1]+lvData[2]+lvData[3]);
                Response.Write(lvData[0]+lvData[1]+lvData[2]+lvData[3]);                    
 }
            }             
 }
        }
 #endregion
        #endregion

 6.通过WMI修改IP,而实现不用重新启动#region 6.通过WMI修改IP,而实现不用重新启动
        6.通过WMI修改IP,而实现不用重新启动#region 6.通过WMI修改IP,而实现不用重新启动
 private void Button6_Click(object sender, System.EventArgs e)
        private void Button6_Click(object sender, System.EventArgs e)
 {
        {
 ReportIP();
            ReportIP(); 
 // SwitchToDHCP();
            // SwitchToDHCP(); 
 SwitchToprivate();
            SwitchToprivate(); 
 Thread.Sleep( 5000 );
            Thread.Sleep( 5000 ); 
 ReportIP();
            ReportIP(); 
 Response.Write( "end." );
            Response.Write( "end." );
 }
        }        
 
        
 private void SwitchToDHCP()
        private void SwitchToDHCP() 
 {
        { 
 ManagementBaseObject inPar = null;
            ManagementBaseObject inPar = null; 
 ManagementBaseObject outPar = null;
            ManagementBaseObject outPar = null; 
 ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
 ManagementObjectCollection moc = mc.GetInstances();
            ManagementObjectCollection moc = mc.GetInstances(); 
 foreach( ManagementObject mo in moc )
            foreach( ManagementObject mo in moc ) 
 {
            { 
 if( ! (bool) mo["IPEnabled"] )
                if( ! (bool) mo["IPEnabled"] ) 
 continue;
                    continue; 

 inPar = mo.GetMethodParameters("EnableDHCP");
                inPar = mo.GetMethodParameters("EnableDHCP"); 
 outPar = mo.InvokeMethod( "EnableDHCP", inPar, null );
                outPar = mo.InvokeMethod( "EnableDHCP", inPar, null ); 
 break;
                break; 
 }
            } 
 }
        } 

 private void SwitchToprivate()
        private void SwitchToprivate() 
 {
        { 
 ManagementBaseObject inPar = null;
            ManagementBaseObject inPar = null; 
 ManagementBaseObject outPar = null;
            ManagementBaseObject outPar = null; 
 ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
 ManagementObjectCollection moc = mc.GetInstances();
            ManagementObjectCollection moc = mc.GetInstances(); 
 foreach( ManagementObject mo in moc )
            foreach( ManagementObject mo in moc ) 
 {
            { 
 if( ! (bool) mo[ "IPEnabled" ] )
                if( ! (bool) mo[ "IPEnabled" ] ) 
 continue;
                    continue; 

 inPar = mo.GetMethodParameters( "Enableprivate" );
                inPar = mo.GetMethodParameters( "Enableprivate" ); 
 inPar["IPAddress"] = new string[] { "192.168.1.1" };
                inPar["IPAddress"] = new string[] { "192.168.1.1" }; 
 inPar["SubnetMask"] = new string[] { "255.255.255.0" };
                inPar["SubnetMask"] = new string[] { "255.255.255.0" }; 
 outPar = mo.InvokeMethod( "Enableprivate", inPar, null );
                outPar = mo.InvokeMethod( "Enableprivate", inPar, null ); 
 break;
                break; 
 }
            } 
 }
        } 

 private void ReportIP()
        private void ReportIP() 
 {
        { 
 Response.Write( "****** Current IP addresses:" );
            Response.Write( "****** Current IP addresses:" ); 
 ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
 ManagementObjectCollection moc = mc.GetInstances();
            ManagementObjectCollection moc = mc.GetInstances(); 
 foreach( ManagementObject mo in moc )
            foreach( ManagementObject mo in moc ) 
 {
            { 
 if( ! (bool) mo[ "IPEnabled" ] )
                if( ! (bool) mo[ "IPEnabled" ] ) 
 continue;
                    continue; 

 string str="{0}\n SVC: '{1}' MAC: [{2}]";
                string str="{0}\n SVC: '{1}' MAC: [{2}]";
 str= string.Format(mo["Caption"].ToString(), mo["ServiceName"].ToString(),mo["MACAddress"].ToString());
                str= string.Format(mo["Caption"].ToString(), mo["ServiceName"].ToString(),mo["MACAddress"].ToString());

 Response.Write(str);
                Response.Write(str); 

 string[] addresses = (string[]) mo[ "IPAddress" ];
                string[] addresses = (string[]) mo[ "IPAddress" ]; 
 string[] subnets = (string[]) mo[ "IPSubnet" ];
                string[] subnets = (string[]) mo[ "IPSubnet" ]; 

 Response.Write( " Addresses :" );
                Response.Write( " Addresses :" ); 
 foreach(string sad in addresses)
                foreach(string sad in addresses) 
 Response.Write(sad+"<br>");
                    Response.Write(sad+"<br>"); 

 Response.Write( " Subnets :" );
                Response.Write( " Subnets :" ); 
 foreach(string sub in subnets )
                foreach(string sub in subnets ) 
 Response.Write(sub+"<br>");
                    Response.Write(sub+"<br>"); 
 }
            } 
 }
        }
 #endregion
        #endregion

 7.如何利用WMI远程重启远程计算机#region 7.如何利用WMI远程重启远程计算机
        7.如何利用WMI远程重启远程计算机#region 7.如何利用WMI远程重启远程计算机
 private void Button7_Click(object sender, System.EventArgs e)
        private void Button7_Click(object sender, System.EventArgs e)
 {
        {
 Response.Write("Computer details retrieved using Windows Management Instrumentation (WMI)");
            Response.Write("Computer details retrieved using Windows Management Instrumentation (WMI)"); 
 Response.Write("mailto:singlepine@hotmail.com");
            Response.Write("mailto:singlepine@hotmail.com"); 
 Response.Write("=========================================================================");
            Response.Write("=========================================================================");  
 //连接远程计算机
            //连接远程计算机 
 ConnectionOptions co = new ConnectionOptions();
            ConnectionOptions co = new ConnectionOptions(); 
 co.Username = "john";
            co.Username = "john"; 
 co.Password = "john";
            co.Password = "john"; 
 System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\192.168.1.2\\root\\cimv2", co);
            System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\192.168.1.2\\root\\cimv2", co);       
 //查询远程计算机
            //查询远程计算机 
 System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem");
            System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem"); 
 
                   
 ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms,oq);
            ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms,oq); 
 ManagementObjectCollection queryCollection1 = query1.Get();
            ManagementObjectCollection queryCollection1 = query1.Get();             
 foreach( ManagementObject mo in queryCollection1 )
            foreach( ManagementObject mo in queryCollection1 )  
 {
            { 
 string[] ss={""};
                string[] ss={""}; 
 mo.InvokeMethod("Reboot",ss);
                mo.InvokeMethod("Reboot",ss); 
 Response.Write(mo.ToString());
                Response.Write(mo.ToString()); 
 }
            } 
 }
        }
 #endregion
        #endregion

 8.利用WMI创建一个新的进程#region 8.利用WMI创建一个新的进程
        8.利用WMI创建一个新的进程#region 8.利用WMI创建一个新的进程
 private void Button8_Click(object sender, System.EventArgs e)
        private void Button8_Click(object sender, System.EventArgs e)
 {
        {
 //Get the object on which the method will be invoked
            //Get the object on which the method will be invoked 
 ManagementClass processClass = new ManagementClass("Win32_Process");
            ManagementClass processClass = new ManagementClass("Win32_Process"); 

 //Get an input parameters object for this method
            //Get an input parameters object for this method 
 ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
            ManagementBaseObject inParams = processClass.GetMethodParameters("Create"); 

 //Fill in input parameter values
            //Fill in input parameter values 
 inParams["CommandLine"] = "calc.exe";
            inParams["CommandLine"] = "calc.exe"; 

 //Execute the method
            //Execute the method 
 ManagementBaseObject outParams = processClass.InvokeMethod ("Create", inParams, null);
            ManagementBaseObject outParams = processClass.InvokeMethod ("Create", inParams, null); 

 //Display results
            //Display results 
 //Note: The return code of the method is provided in the "returnvalue" property of the outParams object
            //Note: The return code of the method is provided in the "returnvalue" property of the outParams object 
 Response.Write("Creation of calculator process returned: " + outParams["returnvalue"]);
            Response.Write("Creation of calculator process returned: " + outParams["returnvalue"]); 
 Response.Write("Process ID: " + outParams["processId"]);
            Response.Write("Process ID: " + outParams["processId"]); 

 }
        }
 #endregion
        #endregion

 9.如何通过WMI终止一个进程#region 9.如何通过WMI终止一个进程
        9.如何通过WMI终止一个进程#region 9.如何通过WMI终止一个进程
 private void Button9_Click(object sender, System.EventArgs e)
        private void Button9_Click(object sender, System.EventArgs e)
 {
        {
 ManagementObject service =
            ManagementObject service =  
 new ManagementObject("win32_service=\"winmgmt\"");
                new ManagementObject("win32_service=\"winmgmt\""); 
 InvokeMethodOptions options = new InvokeMethodOptions();
            InvokeMethodOptions options = new InvokeMethodOptions(); 
 options.Timeout = new TimeSpan(0,0,0,5);
            options.Timeout = new TimeSpan(0,0,0,5);  

 ManagementBaseObject outParams = service.InvokeMethod("StopService", null, options);
            ManagementBaseObject outParams = service.InvokeMethod("StopService", null, options);

 Response.Write("Return Status = " + outParams["Returnvalue"]);
            Response.Write("Return Status = " + outParams["Returnvalue"]);
 }
        }
 #endregion
        #endregion

 10.如何用WMI 来获取远程机器的目录以及文件#region 10.如何用WMI 来获取远程机器的目录以及文件
        10.如何用WMI 来获取远程机器的目录以及文件#region 10.如何用WMI 来获取远程机器的目录以及文件
 private void Button10_Click(object sender, System.EventArgs e)
        private void Button10_Click(object sender, System.EventArgs e)
 {
        {
 ManagementObject disk = new ManagementObject(
            ManagementObject disk = new ManagementObject(

 "win32_logicaldisk.deviceid=\"c:\"");
                "win32_logicaldisk.deviceid=\"c:\"");

 disk.Get();
            disk.Get();

 Response.Write("Logical Disk Size = " + disk["Size"] + " bytes");
            Response.Write("Logical Disk Size = " + disk["Size"] + " bytes");
 }
        }
 #endregion
        #endregion

 11.网卡的MAC地址#region 11.网卡的MAC地址
        11.网卡的MAC地址#region 11.网卡的MAC地址
 private void Button11_Click(object sender, System.EventArgs e)
        private void Button11_Click(object sender, System.EventArgs e)
 {
        {
 ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
 ManagementObjectCollection moc = mc.GetInstances();
            ManagementObjectCollection moc = mc.GetInstances(); 
 foreach(ManagementObject mo in moc)
            foreach(ManagementObject mo in moc) 
 {
            { 
 if((bool)mo["IPEnabled"] == true)
                if((bool)mo["IPEnabled"] == true) 
 Response.Write("MAC address"+mo["MacAddress"].ToString()+"<br>");
                    Response.Write("MAC address"+mo["MacAddress"].ToString()+"<br>"); 
 mo.Dispose();
                mo.Dispose(); 
 }
            } 
 }
        }
 #endregion
        #endregion

 12.CPU的系列号#region 12.CPU的系列号
        12.CPU的系列号#region 12.CPU的系列号 
 private void Button12_Click(object sender, System.EventArgs e)
        private void Button12_Click(object sender, System.EventArgs e)
 {
        {
 string cpuInfo = "";//cpu序列号
            string cpuInfo = "";//cpu序列号 
 ManagementClass cimobject = new ManagementClass("Win32_Processor");
            ManagementClass cimobject = new ManagementClass("Win32_Processor"); 
 ManagementObjectCollection moc = cimobject.GetInstances();
            ManagementObjectCollection moc = cimobject.GetInstances(); 
 foreach(ManagementObject mo in moc)
            foreach(ManagementObject mo in moc) 
 {
            { 
 cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
                cpuInfo = mo.Properties["ProcessorId"].Value.ToString(); 
 Response.Write(cpuInfo);
                Response.Write(cpuInfo);
 }
            } 
 }
        }
 #endregion
        #endregion

 13.主板的系列号#region 13.主板的系列号
        13.主板的系列号#region 13.主板的系列号
 private void Button13_Click(object sender, System.EventArgs e)
        private void Button13_Click(object sender, System.EventArgs e)
 {
        {
 ManagementObjectSearcher searcher=new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
            ManagementObjectSearcher searcher=new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
 foreach(ManagementObject share in searcher.Get())
            foreach(ManagementObject share in searcher.Get())
 {
            {
 Response.Write("主板制造商:" + share["Manufacturer"].ToString()) ;
                Response.Write("主板制造商:" + share["Manufacturer"].ToString()) ;
 Response.Write("型号:" +share["Product"].ToString()) ;
                Response.Write("型号:" +share["Product"].ToString()) ;
 Response.Write("序列号:"+share["SerialNumber"].ToString()) ;
                Response.Write("序列号:"+share["SerialNumber"].ToString()) ;
 }
            }
 }
        }
 #endregion
        #endregion

 14.获取硬盘ID#region 14.获取硬盘ID
        14.获取硬盘ID#region 14.获取硬盘ID
 private void Button14_Click(object sender, System.EventArgs e)
        private void Button14_Click(object sender, System.EventArgs e)
 {
        {
 String HDid;
            String HDid; 
 ManagementClass cimobject = new ManagementClass("Win32_DiskDrive");
            ManagementClass cimobject = new ManagementClass("Win32_DiskDrive"); 
 ManagementObjectCollection moc = cimobject.GetInstances();
            ManagementObjectCollection moc = cimobject.GetInstances(); 
 foreach(ManagementObject mo in moc)
            foreach(ManagementObject mo in moc) 
 {
            { 
 HDid = (string)mo.Properties["Model"].Value;
                HDid = (string)mo.Properties["Model"].Value; 
 Response.Write(HDid);
                Response.Write(HDid);  
 }
            } 
 }
        }
 #endregion
        #endregion

 15.获取本机的用户列表#region 15.获取本机的用户列表
        15.获取本机的用户列表#region 15.获取本机的用户列表
 private void Button15_Click(object sender, System.EventArgs e)
        private void Button15_Click(object sender, System.EventArgs e)
 {
        {
 SelectQuery query = new SelectQuery("SELECT * FROM Win32_UserAccount");
            SelectQuery query = new SelectQuery("SELECT * FROM Win32_UserAccount");
 ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
 foreach(ManagementObject os in searcher.Get())
            foreach(ManagementObject os in searcher.Get())
 {
            {
 Response.Write(os["Name"]);
                Response.Write(os["Name"]);
 }
            }
 }
        }
 #endregion
        #endregion
 }
    }
1.WMI简介
WMI是英文Windows Management Instrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等。
2.使用时首先添加System.Management.dll,然后引用
 using System.Management;
using System.Management; using System.Threading;
using System.Threading; 3.示例代码
3.1 html代码
 <HTML>
<HTML> <HEAD>
    <HEAD> <title>WMITest</title>
        <title>WMITest</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD>
    </HEAD> <body MS_POSITIONING="GridLayout">
    <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server">
        <form id="Form1" method="post" runat="server"> <FONT face="宋体">
            <FONT face="宋体"> <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP: 16px" runat="server"
                <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP: 16px" runat="server" Text="获得本地磁盘的信息" Width="152px"></asp:Button>
                    Text="获得本地磁盘的信息" Width="152px"></asp:Button> <asp:Button id="Button2" style="Z-INDEX: 102; LEFT: 32px; POSITION: absolute; TOP: 56px" runat="server"
                <asp:Button id="Button2" style="Z-INDEX: 102; LEFT: 32px; POSITION: absolute; TOP: 56px" runat="server" Text="获得指定磁盘的容量" Width="144px"></asp:Button>
                    Text="获得指定磁盘的容量" Width="144px"></asp:Button> <asp:Button id="Button3" style="Z-INDEX: 103; LEFT: 32px; POSITION: absolute; TOP: 96px" runat="server"
                <asp:Button id="Button3" style="Z-INDEX: 103; LEFT: 32px; POSITION: absolute; TOP: 96px" runat="server" Text="列出机器中所有的共享资源" Width="192px"></asp:Button>
                    Text="列出机器中所有的共享资源" Width="192px"></asp:Button> <asp:Button id="Button4" style="Z-INDEX: 104; LEFT: 8px; POSITION: absolute; TOP: 128px" runat="server"
                <asp:Button id="Button4" style="Z-INDEX: 104; LEFT: 8px; POSITION: absolute; TOP: 128px" runat="server" Text="控制让系统中的某个文件夹共享或取消共享" Width="264px"></asp:Button>
                    Text="控制让系统中的某个文件夹共享或取消共享" Width="264px"></asp:Button> <asp:Button id="Button5" style="Z-INDEX: 105; LEFT: 48px; POSITION: absolute; TOP: 160px" runat="server"
                <asp:Button id="Button5" style="Z-INDEX: 105; LEFT: 48px; POSITION: absolute; TOP: 160px" runat="server" Text="获得系统服务的运行状态"></asp:Button>
                    Text="获得系统服务的运行状态"></asp:Button> <asp:Button id="Button6" style="Z-INDEX: 106; LEFT: 40px; POSITION: absolute; TOP: 192px" runat="server"
                <asp:Button id="Button6" style="Z-INDEX: 106; LEFT: 40px; POSITION: absolute; TOP: 192px" runat="server" Text="通过WMI修改IP,而实现不用重新启动" Width="248px"></asp:Button>
                    Text="通过WMI修改IP,而实现不用重新启动" Width="248px"></asp:Button> <asp:Button id="Button7" style="Z-INDEX: 107; LEFT: 24px; POSITION: absolute; TOP: 224px" runat="server"
                <asp:Button id="Button7" style="Z-INDEX: 107; LEFT: 24px; POSITION: absolute; TOP: 224px" runat="server" Text="如何利用WMI远程重启远程计算机" Width="232px"></asp:Button>
                    Text="如何利用WMI远程重启远程计算机" Width="232px"></asp:Button> <asp:Button id="Button8" style="Z-INDEX: 108; LEFT: 40px; POSITION: absolute; TOP: 264px" runat="server"
                <asp:Button id="Button8" style="Z-INDEX: 108; LEFT: 40px; POSITION: absolute; TOP: 264px" runat="server" Text="利用WMI创建一个新的进程" Width="192px"></asp:Button>
                    Text="利用WMI创建一个新的进程" Width="192px"></asp:Button> <asp:Button id="Button9" style="Z-INDEX: 109; LEFT: 32px; POSITION: absolute; TOP: 296px" runat="server"
                <asp:Button id="Button9" style="Z-INDEX: 109; LEFT: 32px; POSITION: absolute; TOP: 296px" runat="server" Text="如何通过WMI终止一个进程" Width="192px"></asp:Button>
                    Text="如何通过WMI终止一个进程" Width="192px"></asp:Button> <asp:Button id="Button10" style="Z-INDEX: 110; LEFT: 32px; POSITION: absolute; TOP: 328px" runat="server"
                <asp:Button id="Button10" style="Z-INDEX: 110; LEFT: 32px; POSITION: absolute; TOP: 328px" runat="server" Text="如何用WMI 来获取远程机器的目录以及文件" Width="280px"></asp:Button>
                    Text="如何用WMI 来获取远程机器的目录以及文件" Width="280px"></asp:Button> <asp:Button id="Button11" style="Z-INDEX: 111; LEFT: 424px; POSITION: absolute; TOP: 24px" runat="server"
                <asp:Button id="Button11" style="Z-INDEX: 111; LEFT: 424px; POSITION: absolute; TOP: 24px" runat="server" Text="网卡的MAC地址" Width="120px"></asp:Button>
                    Text="网卡的MAC地址" Width="120px"></asp:Button> <asp:Button id="Button12" style="Z-INDEX: 112; LEFT: 456px; POSITION: absolute; TOP: 64px" runat="server"
                <asp:Button id="Button12" style="Z-INDEX: 112; LEFT: 456px; POSITION: absolute; TOP: 64px" runat="server" Text="CPU的系列号 " Width="104px"></asp:Button>
                    Text="CPU的系列号 " Width="104px"></asp:Button> <asp:Button id="Button13" style="Z-INDEX: 113; LEFT: 448px; POSITION: absolute; TOP: 120px"
                <asp:Button id="Button13" style="Z-INDEX: 113; LEFT: 448px; POSITION: absolute; TOP: 120px" runat="server" Text="主板的系列号"></asp:Button>
                    runat="server" Text="主板的系列号"></asp:Button> <asp:Button id="Button14" style="Z-INDEX: 114; LEFT: 472px; POSITION: absolute; TOP: 160px"
                <asp:Button id="Button14" style="Z-INDEX: 114; LEFT: 472px; POSITION: absolute; TOP: 160px" runat="server" Text="获取硬盘ID"></asp:Button>
                    runat="server" Text="获取硬盘ID"></asp:Button> <asp:Button id="Button15" style="Z-INDEX: 115; LEFT: 448px; POSITION: absolute; TOP: 208px"
                <asp:Button id="Button15" style="Z-INDEX: 115; LEFT: 448px; POSITION: absolute; TOP: 208px" runat="server" Text="获取本机的用户列表" Width="144px"></asp:Button></FONT>
                    runat="server" Text="获取本机的用户列表" Width="144px"></asp:Button></FONT> </form>
        </form> </body>
    </body> </HTML>
</HTML>3.2cs代码
 public class WMITest : System.Web.UI.Page
public class WMITest : System.Web.UI.Page {
    { protected System.Web.UI.WebControls.Button Button2;
        protected System.Web.UI.WebControls.Button Button2; protected System.Web.UI.WebControls.Button Button3;
        protected System.Web.UI.WebControls.Button Button3; protected System.Web.UI.WebControls.Button Button4;
        protected System.Web.UI.WebControls.Button Button4; protected System.Web.UI.WebControls.Button Button5;
        protected System.Web.UI.WebControls.Button Button5; protected System.Web.UI.WebControls.Button Button6;
        protected System.Web.UI.WebControls.Button Button6; protected System.Web.UI.WebControls.Button Button7;
        protected System.Web.UI.WebControls.Button Button7; protected System.Web.UI.WebControls.Button Button8;
        protected System.Web.UI.WebControls.Button Button8; protected System.Web.UI.WebControls.Button Button9;
        protected System.Web.UI.WebControls.Button Button9; protected System.Web.UI.WebControls.Button Button10;
        protected System.Web.UI.WebControls.Button Button10; protected System.Web.UI.WebControls.Button Button11;
        protected System.Web.UI.WebControls.Button Button11; protected System.Web.UI.WebControls.Button Button12;
        protected System.Web.UI.WebControls.Button Button12; protected System.Web.UI.WebControls.Button Button13;
        protected System.Web.UI.WebControls.Button Button13; protected System.Web.UI.WebControls.Button Button14;
        protected System.Web.UI.WebControls.Button Button14; protected System.Web.UI.WebControls.Button Button15;
        protected System.Web.UI.WebControls.Button Button15; protected System.Web.UI.WebControls.Button Button1;
        protected System.Web.UI.WebControls.Button Button1; 
     private void Page_Load(object sender, System.EventArgs e)
        private void Page_Load(object sender, System.EventArgs e) {
        { // Put user code to initialize the page here
            // Put user code to initialize the page here }
        }
 Web Form Designer generated code#region Web Form Designer generated code
        Web Form Designer generated code#region Web Form Designer generated code override protected void OnInit(EventArgs e)
        override protected void OnInit(EventArgs e) {
        { //
            // // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            // CODEGEN: This call is required by the ASP.NET Web Form Designer. //
            // InitializeComponent();
            InitializeComponent(); base.OnInit(e);
            base.OnInit(e); }
        } 
         /**//// <summary>
        /**//// <summary> /// Required method for Designer support - do not modify
        /// Required method for Designer support - do not modify /// the contents of this method with the code editor.
        /// the contents of this method with the code editor. /// </summary>
        /// </summary> private void InitializeComponent()
        private void InitializeComponent() {
        {     this.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Button2.Click += new System.EventHandler(this.Button2_Click);
            this.Button2.Click += new System.EventHandler(this.Button2_Click); this.Button3.Click += new System.EventHandler(this.Button3_Click);
            this.Button3.Click += new System.EventHandler(this.Button3_Click); this.Button4.Click += new System.EventHandler(this.Button4_Click);
            this.Button4.Click += new System.EventHandler(this.Button4_Click); this.Button5.Click += new System.EventHandler(this.Button5_Click);
            this.Button5.Click += new System.EventHandler(this.Button5_Click); this.Button6.Click += new System.EventHandler(this.Button6_Click);
            this.Button6.Click += new System.EventHandler(this.Button6_Click); this.Button7.Click += new System.EventHandler(this.Button7_Click);
            this.Button7.Click += new System.EventHandler(this.Button7_Click); this.Button8.Click += new System.EventHandler(this.Button8_Click);
            this.Button8.Click += new System.EventHandler(this.Button8_Click); this.Button9.Click += new System.EventHandler(this.Button9_Click);
            this.Button9.Click += new System.EventHandler(this.Button9_Click); this.Button10.Click += new System.EventHandler(this.Button10_Click);
            this.Button10.Click += new System.EventHandler(this.Button10_Click); this.Button11.Click += new System.EventHandler(this.Button11_Click);
            this.Button11.Click += new System.EventHandler(this.Button11_Click); this.Button12.Click += new System.EventHandler(this.Button12_Click);
            this.Button12.Click += new System.EventHandler(this.Button12_Click); this.Button13.Click += new System.EventHandler(this.Button13_Click);
            this.Button13.Click += new System.EventHandler(this.Button13_Click); this.Button14.Click += new System.EventHandler(this.Button14_Click);
            this.Button14.Click += new System.EventHandler(this.Button14_Click); this.Button15.Click += new System.EventHandler(this.Button15_Click);
            this.Button15.Click += new System.EventHandler(this.Button15_Click); this.Load += new System.EventHandler(this.Page_Load);
            this.Load += new System.EventHandler(this.Page_Load);
 }
        } #endregion
        #endregion
 1.如何用WMI获得指定磁盘的容量#region 1.如何用WMI获得指定磁盘的容量
        1.如何用WMI获得指定磁盘的容量#region 1.如何用WMI获得指定磁盘的容量 private string DriveType(string type)
        private string DriveType(string type) {
        { string rtntype="";
            string rtntype=""; switch (type)
            switch (type) {
            { case "1":
                case "1": rtntype="Not Type";
                    rtntype="Not Type"; break;
                    break; case "2":
                case "2": rtntype="Floppy disk";
                    rtntype="Floppy disk"; break;
                    break; case "3":
                case "3": rtntype="Hard disk";
                    rtntype="Hard disk"; break;
                    break; case "4":
                case "4": rtntype="Removable drive or network drive";
                    rtntype="Removable drive or network drive"; break;
                    break; case "5":
                case "5": rtntype="CD-ROM";
                    rtntype="CD-ROM"; break;
                    break; case "6":
                case "6": rtntype="RAM disk";
                    rtntype="RAM disk"; break;
                    break; default :
                default : break;
                    break; }
            } return rtntype;
            return rtntype; }
        }
 private void Button1_Click(object sender, System.EventArgs e)
        private void Button1_Click(object sender, System.EventArgs e) {
        { SelectQuery query=new SelectQuery("Select * From Win32_LogicalDisk");
            SelectQuery query=new SelectQuery("Select * From Win32_LogicalDisk");  ManagementObjectSearcher searcher=new ManagementObjectSearcher(query);
            ManagementObjectSearcher searcher=new ManagementObjectSearcher(query);  foreach(ManagementBaseObject disk in searcher.Get())
            foreach(ManagementBaseObject disk in searcher.Get())  {
            {  Response.Write(disk["Name"] +" "+DriveType(disk["DriveType"].ToString()) + " " + disk["VolumeName"]+"<br>");
                Response.Write(disk["Name"] +" "+DriveType(disk["DriveType"].ToString()) + " " + disk["VolumeName"]+"<br>");  }
            } }
        } #endregion
        #endregion
 2.如何用WMI获得指定磁盘的容量#region 2.如何用WMI获得指定磁盘的容量
        2.如何用WMI获得指定磁盘的容量#region 2.如何用WMI获得指定磁盘的容量 private void Button2_Click(object sender, System.EventArgs e)
        private void Button2_Click(object sender, System.EventArgs e) {
        { ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
            ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");  disk.Get();
            disk.Get();  Response.Write("Logical Disk Size = " + disk["Size"] + " bytes");
            Response.Write("Logical Disk Size = " + disk["Size"] + " bytes");              }
        } #endregion
        #endregion
 3.如何列出机器中所有的共享资源#region 3.如何列出机器中所有的共享资源
        3.如何列出机器中所有的共享资源#region 3.如何列出机器中所有的共享资源 private void Button3_Click(object sender, System.EventArgs e)
        private void Button3_Click(object sender, System.EventArgs e) {
        { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_share");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_share");  foreach (ManagementObject share in searcher.Get())
            foreach (ManagementObject share in searcher.Get())  {
            {  Response.Write(share.GetText(TextFormat.Mof));
                Response.Write(share.GetText(TextFormat.Mof));  }
            }  }
        } #endregion
        #endregion
 4.怎样写程控制让系统中的某个文件夹共享或取消共享#region 4.怎样写程控制让系统中的某个文件夹共享或取消共享
        4.怎样写程控制让系统中的某个文件夹共享或取消共享#region 4.怎样写程控制让系统中的某个文件夹共享或取消共享 private void Button4_Click(object sender, System.EventArgs e)
        private void Button4_Click(object sender, System.EventArgs e) {
        { /**//*首先,这需要以有相应权限的用户登录系统才行
            /**//*首先,这需要以有相应权限的用户登录系统才行 将
            将  object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""};
            object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""};  改为
            改为  object[] obj = {"C:\\Temp","我的共享",0,null,"Dot Net 实现的共享",""};
            object[] obj = {"C:\\Temp","我的共享",0,null,"Dot Net 实现的共享",""};  就可以实现授权给最多用户了。
            就可以实现授权给最多用户了。 */
            */ ManagementClass _class = new ManagementClass(new ManagementPath("Win32_Share"));
            ManagementClass _class = new ManagementClass(new ManagementPath("Win32_Share")); object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""};
            object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""}; _class.InvokeMethod("create",obj);
            _class.InvokeMethod("create",obj);  }
        } #endregion
        #endregion
 5.如何获得系统服务的运行状态#region 5.如何获得系统服务的运行状态
        5.如何获得系统服务的运行状态#region 5.如何获得系统服务的运行状态 private void Button5_Click(object sender, System.EventArgs e)
        private void Button5_Click(object sender, System.EventArgs e) {
        { string[] lvData =  new string[4];
            string[] lvData =  new string[4];             ManagementObjectSearcher searcher =new ManagementObjectSearcher("SELECT * FROM Win32_Service");
            ManagementObjectSearcher searcher =new ManagementObjectSearcher("SELECT * FROM Win32_Service");  foreach (ManagementObject mo in searcher.Get())
            foreach (ManagementObject mo in searcher.Get())  {
            {  lvData[0] = mo["Name"].ToString();
                lvData[0] = mo["Name"].ToString();  lvData[1] = mo["StartMode"].ToString();
                lvData[1] = mo["StartMode"].ToString();  if (mo["Started"].Equals(true))
                if (mo["Started"].Equals(true))  lvData[2] = "Started";
                    lvData[2] = "Started";  else
                else  lvData[2] = "Stop";
                    lvData[2] = "Stop";  lvData[3] = mo["StartName"].ToString();
                lvData[3] = mo["StartName"].ToString();  Response.Write(lvData[0]+lvData[1]+lvData[2]+lvData[3]);
                Response.Write(lvData[0]+lvData[1]+lvData[2]+lvData[3]);                     }
            }              }
        } #endregion
        #endregion
 6.通过WMI修改IP,而实现不用重新启动#region 6.通过WMI修改IP,而实现不用重新启动
        6.通过WMI修改IP,而实现不用重新启动#region 6.通过WMI修改IP,而实现不用重新启动 private void Button6_Click(object sender, System.EventArgs e)
        private void Button6_Click(object sender, System.EventArgs e) {
        { ReportIP();
            ReportIP();  // SwitchToDHCP();
            // SwitchToDHCP();  SwitchToprivate();
            SwitchToprivate();  Thread.Sleep( 5000 );
            Thread.Sleep( 5000 );  ReportIP();
            ReportIP();  Response.Write( "end." );
            Response.Write( "end." ); }
        }         
         private void SwitchToDHCP()
        private void SwitchToDHCP()  {
        {  ManagementBaseObject inPar = null;
            ManagementBaseObject inPar = null;  ManagementBaseObject outPar = null;
            ManagementBaseObject outPar = null;  ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");  ManagementObjectCollection moc = mc.GetInstances();
            ManagementObjectCollection moc = mc.GetInstances();  foreach( ManagementObject mo in moc )
            foreach( ManagementObject mo in moc )  {
            {  if( ! (bool) mo["IPEnabled"] )
                if( ! (bool) mo["IPEnabled"] )  continue;
                    continue; 
 inPar = mo.GetMethodParameters("EnableDHCP");
                inPar = mo.GetMethodParameters("EnableDHCP");  outPar = mo.InvokeMethod( "EnableDHCP", inPar, null );
                outPar = mo.InvokeMethod( "EnableDHCP", inPar, null );  break;
                break;  }
            }  }
        } 
 private void SwitchToprivate()
        private void SwitchToprivate()  {
        {  ManagementBaseObject inPar = null;
            ManagementBaseObject inPar = null;  ManagementBaseObject outPar = null;
            ManagementBaseObject outPar = null;  ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");  ManagementObjectCollection moc = mc.GetInstances();
            ManagementObjectCollection moc = mc.GetInstances();  foreach( ManagementObject mo in moc )
            foreach( ManagementObject mo in moc )  {
            {  if( ! (bool) mo[ "IPEnabled" ] )
                if( ! (bool) mo[ "IPEnabled" ] )  continue;
                    continue; 
 inPar = mo.GetMethodParameters( "Enableprivate" );
                inPar = mo.GetMethodParameters( "Enableprivate" );  inPar["IPAddress"] = new string[] { "192.168.1.1" };
                inPar["IPAddress"] = new string[] { "192.168.1.1" };  inPar["SubnetMask"] = new string[] { "255.255.255.0" };
                inPar["SubnetMask"] = new string[] { "255.255.255.0" };  outPar = mo.InvokeMethod( "Enableprivate", inPar, null );
                outPar = mo.InvokeMethod( "Enableprivate", inPar, null );  break;
                break;  }
            }  }
        } 
 private void ReportIP()
        private void ReportIP()  {
        {  Response.Write( "****** Current IP addresses:" );
            Response.Write( "****** Current IP addresses:" );  ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");  ManagementObjectCollection moc = mc.GetInstances();
            ManagementObjectCollection moc = mc.GetInstances();  foreach( ManagementObject mo in moc )
            foreach( ManagementObject mo in moc )  {
            {  if( ! (bool) mo[ "IPEnabled" ] )
                if( ! (bool) mo[ "IPEnabled" ] )  continue;
                    continue; 
 string str="{0}\n SVC: '{1}' MAC: [{2}]";
                string str="{0}\n SVC: '{1}' MAC: [{2}]"; str= string.Format(mo["Caption"].ToString(), mo["ServiceName"].ToString(),mo["MACAddress"].ToString());
                str= string.Format(mo["Caption"].ToString(), mo["ServiceName"].ToString(),mo["MACAddress"].ToString());
 Response.Write(str);
                Response.Write(str); 
 string[] addresses = (string[]) mo[ "IPAddress" ];
                string[] addresses = (string[]) mo[ "IPAddress" ];  string[] subnets = (string[]) mo[ "IPSubnet" ];
                string[] subnets = (string[]) mo[ "IPSubnet" ]; 
 Response.Write( " Addresses :" );
                Response.Write( " Addresses :" );  foreach(string sad in addresses)
                foreach(string sad in addresses)  Response.Write(sad+"<br>");
                    Response.Write(sad+"<br>"); 
 Response.Write( " Subnets :" );
                Response.Write( " Subnets :" );  foreach(string sub in subnets )
                foreach(string sub in subnets )  Response.Write(sub+"<br>");
                    Response.Write(sub+"<br>");  }
            }  }
        } #endregion
        #endregion
 7.如何利用WMI远程重启远程计算机#region 7.如何利用WMI远程重启远程计算机
        7.如何利用WMI远程重启远程计算机#region 7.如何利用WMI远程重启远程计算机 private void Button7_Click(object sender, System.EventArgs e)
        private void Button7_Click(object sender, System.EventArgs e) {
        { Response.Write("Computer details retrieved using Windows Management Instrumentation (WMI)");
            Response.Write("Computer details retrieved using Windows Management Instrumentation (WMI)");  Response.Write("mailto:singlepine@hotmail.com");
            Response.Write("mailto:singlepine@hotmail.com");  Response.Write("=========================================================================");
            Response.Write("=========================================================================");   //连接远程计算机
            //连接远程计算机  ConnectionOptions co = new ConnectionOptions();
            ConnectionOptions co = new ConnectionOptions();  co.Username = "john";
            co.Username = "john";  co.Password = "john";
            co.Password = "john";  System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\192.168.1.2\\root\\cimv2", co);
            System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\192.168.1.2\\root\\cimv2", co);        //查询远程计算机
            //查询远程计算机  System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem");
            System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem");  
                    ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms,oq);
            ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms,oq);  ManagementObjectCollection queryCollection1 = query1.Get();
            ManagementObjectCollection queryCollection1 = query1.Get();              foreach( ManagementObject mo in queryCollection1 )
            foreach( ManagementObject mo in queryCollection1 )   {
            {  string[] ss={""};
                string[] ss={""};  mo.InvokeMethod("Reboot",ss);
                mo.InvokeMethod("Reboot",ss);  Response.Write(mo.ToString());
                Response.Write(mo.ToString());  }
            }  }
        } #endregion
        #endregion
 8.利用WMI创建一个新的进程#region 8.利用WMI创建一个新的进程
        8.利用WMI创建一个新的进程#region 8.利用WMI创建一个新的进程 private void Button8_Click(object sender, System.EventArgs e)
        private void Button8_Click(object sender, System.EventArgs e) {
        { //Get the object on which the method will be invoked
            //Get the object on which the method will be invoked  ManagementClass processClass = new ManagementClass("Win32_Process");
            ManagementClass processClass = new ManagementClass("Win32_Process"); 
 //Get an input parameters object for this method
            //Get an input parameters object for this method  ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
            ManagementBaseObject inParams = processClass.GetMethodParameters("Create"); 
 //Fill in input parameter values
            //Fill in input parameter values  inParams["CommandLine"] = "calc.exe";
            inParams["CommandLine"] = "calc.exe"; 
 //Execute the method
            //Execute the method  ManagementBaseObject outParams = processClass.InvokeMethod ("Create", inParams, null);
            ManagementBaseObject outParams = processClass.InvokeMethod ("Create", inParams, null); 
 //Display results
            //Display results  //Note: The return code of the method is provided in the "returnvalue" property of the outParams object
            //Note: The return code of the method is provided in the "returnvalue" property of the outParams object  Response.Write("Creation of calculator process returned: " + outParams["returnvalue"]);
            Response.Write("Creation of calculator process returned: " + outParams["returnvalue"]);  Response.Write("Process ID: " + outParams["processId"]);
            Response.Write("Process ID: " + outParams["processId"]); 
 }
        } #endregion
        #endregion
 9.如何通过WMI终止一个进程#region 9.如何通过WMI终止一个进程
        9.如何通过WMI终止一个进程#region 9.如何通过WMI终止一个进程 private void Button9_Click(object sender, System.EventArgs e)
        private void Button9_Click(object sender, System.EventArgs e) {
        { ManagementObject service =
            ManagementObject service =   new ManagementObject("win32_service=\"winmgmt\"");
                new ManagementObject("win32_service=\"winmgmt\"");  InvokeMethodOptions options = new InvokeMethodOptions();
            InvokeMethodOptions options = new InvokeMethodOptions();  options.Timeout = new TimeSpan(0,0,0,5);
            options.Timeout = new TimeSpan(0,0,0,5);  
 ManagementBaseObject outParams = service.InvokeMethod("StopService", null, options);
            ManagementBaseObject outParams = service.InvokeMethod("StopService", null, options);
 Response.Write("Return Status = " + outParams["Returnvalue"]);
            Response.Write("Return Status = " + outParams["Returnvalue"]); }
        } #endregion
        #endregion
 10.如何用WMI 来获取远程机器的目录以及文件#region 10.如何用WMI 来获取远程机器的目录以及文件
        10.如何用WMI 来获取远程机器的目录以及文件#region 10.如何用WMI 来获取远程机器的目录以及文件 private void Button10_Click(object sender, System.EventArgs e)
        private void Button10_Click(object sender, System.EventArgs e) {
        { ManagementObject disk = new ManagementObject(
            ManagementObject disk = new ManagementObject(
 "win32_logicaldisk.deviceid=\"c:\"");
                "win32_logicaldisk.deviceid=\"c:\"");
 disk.Get();
            disk.Get();
 Response.Write("Logical Disk Size = " + disk["Size"] + " bytes");
            Response.Write("Logical Disk Size = " + disk["Size"] + " bytes"); }
        } #endregion
        #endregion
 11.网卡的MAC地址#region 11.网卡的MAC地址
        11.网卡的MAC地址#region 11.网卡的MAC地址 private void Button11_Click(object sender, System.EventArgs e)
        private void Button11_Click(object sender, System.EventArgs e) {
        { ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");  ManagementObjectCollection moc = mc.GetInstances();
            ManagementObjectCollection moc = mc.GetInstances();  foreach(ManagementObject mo in moc)
            foreach(ManagementObject mo in moc)  {
            {  if((bool)mo["IPEnabled"] == true)
                if((bool)mo["IPEnabled"] == true)  Response.Write("MAC address"+mo["MacAddress"].ToString()+"<br>");
                    Response.Write("MAC address"+mo["MacAddress"].ToString()+"<br>");  mo.Dispose();
                mo.Dispose();  }
            }  }
        } #endregion
        #endregion
 12.CPU的系列号#region 12.CPU的系列号
        12.CPU的系列号#region 12.CPU的系列号  private void Button12_Click(object sender, System.EventArgs e)
        private void Button12_Click(object sender, System.EventArgs e) {
        { string cpuInfo = "";//cpu序列号
            string cpuInfo = "";//cpu序列号  ManagementClass cimobject = new ManagementClass("Win32_Processor");
            ManagementClass cimobject = new ManagementClass("Win32_Processor");  ManagementObjectCollection moc = cimobject.GetInstances();
            ManagementObjectCollection moc = cimobject.GetInstances();  foreach(ManagementObject mo in moc)
            foreach(ManagementObject mo in moc)  {
            {  cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
                cpuInfo = mo.Properties["ProcessorId"].Value.ToString();  Response.Write(cpuInfo);
                Response.Write(cpuInfo); }
            }  }
        } #endregion
        #endregion
 13.主板的系列号#region 13.主板的系列号
        13.主板的系列号#region 13.主板的系列号 private void Button13_Click(object sender, System.EventArgs e)
        private void Button13_Click(object sender, System.EventArgs e) {
        { ManagementObjectSearcher searcher=new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
            ManagementObjectSearcher searcher=new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard"); foreach(ManagementObject share in searcher.Get())
            foreach(ManagementObject share in searcher.Get()) {
            { Response.Write("主板制造商:" + share["Manufacturer"].ToString()) ;
                Response.Write("主板制造商:" + share["Manufacturer"].ToString()) ; Response.Write("型号:" +share["Product"].ToString()) ;
                Response.Write("型号:" +share["Product"].ToString()) ; Response.Write("序列号:"+share["SerialNumber"].ToString()) ;
                Response.Write("序列号:"+share["SerialNumber"].ToString()) ; }
            } }
        } #endregion
        #endregion
 14.获取硬盘ID#region 14.获取硬盘ID
        14.获取硬盘ID#region 14.获取硬盘ID private void Button14_Click(object sender, System.EventArgs e)
        private void Button14_Click(object sender, System.EventArgs e) {
        { String HDid;
            String HDid;  ManagementClass cimobject = new ManagementClass("Win32_DiskDrive");
            ManagementClass cimobject = new ManagementClass("Win32_DiskDrive");  ManagementObjectCollection moc = cimobject.GetInstances();
            ManagementObjectCollection moc = cimobject.GetInstances();  foreach(ManagementObject mo in moc)
            foreach(ManagementObject mo in moc)  {
            {  HDid = (string)mo.Properties["Model"].Value;
                HDid = (string)mo.Properties["Model"].Value;  Response.Write(HDid);
                Response.Write(HDid);   }
            }  }
        } #endregion
        #endregion
 15.获取本机的用户列表#region 15.获取本机的用户列表
        15.获取本机的用户列表#region 15.获取本机的用户列表 private void Button15_Click(object sender, System.EventArgs e)
        private void Button15_Click(object sender, System.EventArgs e) {
        { SelectQuery query = new SelectQuery("SELECT * FROM Win32_UserAccount");
            SelectQuery query = new SelectQuery("SELECT * FROM Win32_UserAccount"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); foreach(ManagementObject os in searcher.Get())
            foreach(ManagementObject os in searcher.Get()) {
            { Response.Write(os["Name"]);
                Response.Write(os["Name"]); }
            } }
        } #endregion
        #endregion }
    } 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号