1、什么是WMI
Windows Management Instrumentation (WMI) 是 Windows 操作系统的一个组件,允许通过编程方式访问企业环境中的管理信息。.NET Framework 中的 WMI 基于原始的 WMI 技术,允许利用 .NET Framework 中的编程优势进行同样的应用程序和提供程序开发。
2、为.NET使用WMI设置环境
需要在新建项目添加System.Managemen.dll的引用,并引入System.Management;
3、示例
获取指定磁盘的描述信息?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Management; //Reference System.Management first
namespace WMISample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SelectQuery selectQuery = new SelectQuery("Win32_DiskDrive");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);
foreach (ManagementObject disk in searcher.Get())
{
MessageBox.Show(disk.ToString());
MessageBox.Show(disk["Caption"].ToString());
}
}
private void button2_Click(object sender, EventArgs e)
{
WqlObjectQuery wqlQuery = new WqlObjectQuery("select * from Win32_DiskDrive");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wqlQuery);
foreach (ManagementObject disk in searcher.Get())
{
MessageBox.Show(disk.ToString());
MessageBox.Show(disk["Caption"].ToString());
}
}
}
}
3、示例
(1)获取指定磁盘的容量?
using System;
using System.Management;
// This example demonstrates reading a property of a ManagementObject.
class Sample_ManagementObject
{
public static int Main(string[] args)
{
ManagementObject disk = new ManagementObject(
"win32_logicaldisk.deviceid=/"c:/"");
disk.Get();
Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes");
Console.ReadLine();
return 0;
}
}
(2)获取CPU信息
public string cpuinfo()
{
string a="";
ManagementClass mcobject = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mcobject.GetInstances();
foreach(ManagementObject mo in moc)
{
a += "CPU:" + mo.Properties["ProcessorId"].Value.ToString() + "n";
}
return a;
}