轉載: http://singlepine.cnblogs.com/articles/299457.html
1.WMI簡介 WMI是英文Windows?Management?Instrumentation的簡寫,它的功能主要是:訪問本地主機的一些信息和服務,可以管理遠程計算機(當然你必須要擁有足夠的權限),比如:重啟,關機,關閉進程,創建進程等。 2.使用時首先添加System.Management.dll,然后引用


3.示例代碼
?

#region 1.如何用WMI獲得指定磁盤的容量 private string DriveType( string type) { string rtntype= "" ; switch (type) { case " 1 " : rtntype = " Not Type " ; break ; case " 2 " : rtntype = " Floppy disk " ; break ; case " 3 " : rtntype = " Hard disk " ; break ; case " 4 " : rtntype = " Removable drive or network drive " ; break ; case " 5 " : rtntype = " CD-ROM " ; break ; case " 6 " : rtntype = " RAM disk " ; break ; default : break ; } return rtntype; } private void Button1_Click( object sender, System.EventArgs e) { SelectQuery query = new SelectQuery( " Select * From Win32_LogicalDisk " ); ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); foreach (ManagementBaseObject disk in searcher.Get()) { Response.Write(disk[ " Name " ] + " " +DriveType(disk[ " DriveType " ].ToString()) + " " + disk[ " VolumeName " ]+ " <br> " ); } } #endregion #region 2.如何用WMI獲得指定磁盤的容量 private void Button2_Click( object sender, System.EventArgs e) { ManagementObject disk = new ManagementObject( " win32_logicaldisk.deviceid=\"c:\" " ); disk.Get(); Response.Write( " Logical Disk Size = " + disk[ " Size " ] + " bytes " ); } #endregion #region 3.如何列出機器中所有的共享資源 private void Button3_Click( object sender, System.EventArgs e) { ManagementObjectSearcher searcher = new ManagementObjectSearcher( " SELECT * FROM Win32_share " ); foreach (ManagementObject share in searcher.Get()) { Response.Write(share.GetText(TextFormat.Mof)); } } #endregion #region 4.怎樣寫程控制讓系統中的某個文件夾共享或取消共享 private void Button4_Click( object sender, System.EventArgs e) { /* 首先,這需要以有相應權限的用戶登錄系統才行 將 object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 實現的共享",""}; 改為 object[] obj = {"C:\\Temp","我的共享",0,null,"Dot Net 實現的共享",""}; 就可以實現授權給最多用戶了。 */ ManagementClass _class = new ManagementClass( new ManagementPath( " Win32_Share " )); object [] obj = { " C:\\Temp " , " 我的共享 " , 0 , 10 , " Dot Net 實現的共享 " , "" }; _class.InvokeMethod( " create " ,obj); } #endregion #region 5.如何獲得系統服務的運行狀態 private void Button5_Click( object sender, System.EventArgs e) { string [] lvData = new string [ 4 ]; ManagementObjectSearcher searcher = new ManagementObjectSearcher( " SELECT * FROM Win32_Service " ); foreach (ManagementObject mo in searcher.Get()) { lvData[ 0 ] = mo[ " Name " ].ToString(); lvData[ 1 ] = mo[ " StartMode " ].ToString(); if (mo[ " Started " ].Equals( true )) lvData[ 2 ] = " Started " ; else lvData[ 2 ] = " Stop " ; lvData[ 3 ] = mo[ " StartName " ].ToString(); Response.Write(lvData[ 0 ]+lvData[ 1 ]+lvData[ 2 ]+lvData[ 3 ]); } } #endregion #region 6.通過WMI修改IP,而實現不用重新啟動 private void Button6_Click( object sender, System.EventArgs e) { ReportIP(); // SwitchToDHCP(); SwitchToprivate(); Thread.Sleep( 5000 ); ReportIP(); Response.Write( " end. " ); } private void SwitchToDHCP() { ManagementBaseObject inPar = null ; ManagementBaseObject outPar = null ; ManagementClass mc = new ManagementClass( " Win32_NetworkAdapterConfiguration " ); ManagementObjectCollection moc = mc.GetInstances(); foreach ( ManagementObject mo in moc ) { if ( ! ( bool ) mo[ " IPEnabled " ] ) continue ; inPar = mo.GetMethodParameters( " EnableDHCP " ); outPar = mo.InvokeMethod( " EnableDHCP " , inPar, null ); break ; } } private void SwitchToprivate() { ManagementBaseObject inPar = null ; ManagementBaseObject outPar = null ; ManagementClass mc = new ManagementClass( " Win32_NetworkAdapterConfiguration " ); ManagementObjectCollection moc = mc.GetInstances(); foreach ( ManagementObject mo in moc ) { if ( ! ( bool ) mo[ " IPEnabled " ] ) continue ; inPar = mo.GetMethodParameters( " Enableprivate " ); inPar[ " IPAddress " ] = new string [] { " 192.168.1.1 " }; inPar[ " SubnetMask " ] = new string [] { " 255.255.255.0 " }; outPar = mo.InvokeMethod( " Enableprivate " , inPar, null ); break ; } } private void ReportIP() { Response.Write( " ****** Current IP addresses: " ); ManagementClass mc = new ManagementClass( " Win32_NetworkAdapterConfiguration " ); ManagementObjectCollection moc = mc.GetInstances(); foreach ( ManagementObject mo in moc ) { if ( ! ( bool ) mo[ " IPEnabled " ] ) continue ; string str= " {0}\n SVC: '{1}' MAC: [{2}] " ; str = string .Format(mo[ " Caption " ].ToString(), mo[ " ServiceName " ].ToString(),mo[ " MACAddress " ].ToString()); Response.Write(str); string [] addresses = ( string []) mo[ " IPAddress " ]; string [] subnets = ( string []) mo[ " IPSubnet " ]; Response.Write( " Addresses : " ); foreach ( string sad in addresses) Response.Write(sad + " <br> " ); Response.Write( " Subnets : " ); foreach ( string sub in subnets ) Response.Write(sub + " <br> " ); } } #endregion #region 7.如何利用WMI遠程重啟遠程計算機 private void Button7_Click( object sender, System.EventArgs e) { Response.Write( " Computer details retrieved using Windows Management Instrumentation (WMI) " ); Response.Write( " mailto:singlepine@hotmail.com " ); Response.Write( " ========================================================================= " ); // 連接遠程計算機 ConnectionOptions co = new ConnectionOptions(); co.Username = " john " ; co.Password = " john " ; 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 " ); ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms,oq); ManagementObjectCollection queryCollection1 = query1.Get(); foreach ( ManagementObject mo in queryCollection1 ) { string [] ss={ "" }; mo.InvokeMethod( " Reboot " ,ss); Response.Write(mo.ToString()); } } #endregion #region 8.利用WMI創建一個新的進程 private void Button8_Click( object sender, System.EventArgs e) { // Get the object on which the method will be invoked ManagementClass processClass = new ManagementClass( " Win32_Process " ); // Get an input parameters object for this method ManagementBaseObject inParams = processClass.GetMethodParameters( " Create " ); // Fill in input parameter values inParams[ " CommandLine " ] = " calc.exe " ; // Execute the method ManagementBaseObject outParams = processClass.InvokeMethod ( " Create " , inParams, null ); // Display results // 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( " Process ID: " + outParams[ " processId " ]); } #endregion #region 9.如何通過WMI終止一個進程 private void Button9_Click( object sender, System.EventArgs e) { ManagementObject service = new ManagementObject( " win32_service=\"winmgmt\" " ); InvokeMethodOptions options = new InvokeMethodOptions(); options.Timeout = new TimeSpan( 0 , 0 , 0 , 5 ); ManagementBaseObject outParams = service.InvokeMethod( " StopService " , null , options); Response.Write( " Return Status = " + outParams[ " Returnvalue " ]); } #endregion #region 10.如何用WMI 來獲取遠程機器的目錄以及文件 private void Button10_Click( object sender, System.EventArgs e) { ManagementObject disk = new ManagementObject( " win32_logicaldisk.deviceid=\"c:\" " ); disk.Get(); Response.Write( " Logical Disk Size = " + disk[ " Size " ] + " bytes " ); } #endregion #region 11.網卡的MAC地址 private void Button11_Click( object sender, System.EventArgs e) { ManagementClass mc = new ManagementClass( " Win32_NetworkAdapterConfiguration " ); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if (( bool )mo[ " IPEnabled " ] == true ) Response.Write( " MAC address " +mo[ " MacAddress " ].ToString()+ " <br> " ); mo.Dispose(); } } #endregion #region 12.CPU的系列號 private void Button12_Click( object sender, System.EventArgs e) { string cpuInfo = "" ; // cpu序列號 ManagementClass cimobject = new ManagementClass( " Win32_Processor " ); ManagementObjectCollection moc = cimobject.GetInstances(); foreach (ManagementObject mo in moc) { cpuInfo = mo.Properties[ " ProcessorId " ].Value.ToString(); Response.Write(cpuInfo); } } #endregion #region 13.主板的系列號 private void Button13_Click( object sender, System.EventArgs e) { ManagementObjectSearcher searcher = new ManagementObjectSearcher( " SELECT * FROM Win32_BaseBoard " ); foreach (ManagementObject share in searcher.Get()) { Response.Write( " 主板制造商: " + share[ " Manufacturer " ].ToString()) ; Response.Write( " 型號: " +share[ " Product " ].ToString()) ; Response.Write( " 序列號: " +share[ " SerialNumber " ].ToString()) ; } } #endregion #region 14.獲取硬盤ID private void Button14_Click( object sender, System.EventArgs e) { String HDid; ManagementClass cimobject = new ManagementClass( " Win32_DiskDrive " ); ManagementObjectCollection moc = cimobject.GetInstances(); foreach (ManagementObject mo in moc) { HDid = ( string )mo.Properties[ " Model " ].Value; Response.Write(HDid); } } #endregion #region 15.獲取本機的用戶列表 private void Button15_Click( object sender, System.EventArgs e) { SelectQuery query = new SelectQuery( " SELECT * FROM Win32_UserAccount " ); ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); foreach (ManagementObject os in searcher.Get()) { Response.Write(os[ " Name " ]); } } #endregion }
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
