WMI 是 Windows Management Instrumentation 。



主要功能是:
访问本地主机的一些信息和服务,可以管理远程计算机,比如:获取磁盘信息,获取磁盘大小,获取网卡地址,获取CPU信息,获取硬盘型号,共享目录,重启,关机,创建进程,关闭进程等。(前提是你拥有足够的权限)呵呵,很强大吧。

使用方法:
很简单,在项目中引用 System.Management.dll 即可。

下面给出部分代码:

private void Page_Load(object sender, System.EventArgs e)
{
TextBox1.Text += getdisk();
TextBox1.Text += getmacaddress();
TextBox1.Text += cpuinfo();
TextBox1.Text += hardinfo();
TextBox1.Text += baseboard();
}

/// <summary>
/// 获取磁盘信息
/// </summary>
/// <returns></returns>
public string getdisk()
{
// disk["DriveType"] 的返回值意义如下:
// 1 No type
// 2 Floppy disk
// 3 Hard disk
// 4 Removable drive or network drive
// 5 CD-ROM
// 6 RAM disk
string a="";
SelectQuery query=new SelectQuery("Select * From Win32_LogicalDisk");
ManagementObjectSearcher searcher=new ManagementObjectSearcher(query);
foreach(ManagementBaseObject disk in searcher.Get())
{
a += (" "+disk["Name"] +" "+disk["DriveType"] + " " + disk["VolumeName"]) + diskinfo(disk["Name"].ToString()) +"n";
}
return a;
}
/// <summary>
/// 获取磁盘大小
/// </summary>
/// <param name="d"></param>
/// <returns></returns>
public string diskinfo(string d)
{
string a="";
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid='"+d+"'");
disk.Get();
a = (" " + disk["Size"] + " bytes");
return a;
}
/// <summary>
/// 获取网卡地址
/// </summary>
/// <returns></returns>
public string getmacaddress()
{
string a="";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"] == true)
a = "网卡:" + mo["MacAddress"].ToString() + "n";
mo.Dispose();
}
return a;
}
/// <summary>
/// 获取CPU信息
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 获取硬盘型号
/// </summary>
/// <returns></returns>
public string hardinfo()
{
string a="";
ManagementClass mcobject = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc = mcobject.GetInstances();
foreach(ManagementObject mo in moc)
{
a += "硬盘型号:" + mo.Properties["Model"].Value.ToString() + mo.Properties[""].Value.ToString() + "n";
}
return a;
}
public string baseboard()
{
string a="";
SelectQuery query=new SelectQuery("SELECT * FROM Win32_BaseBoard");
ManagementObjectSearcher searcher=new ManagementObjectSearcher(query);
foreach(ManagementBaseObject disk in searcher.Get())
{
a += "主板制造商: "+disk["Manufacturer"] +"n型号: "+disk["Product"] + "n序列号: " + disk["SerialNumber"] +baseinfo() +"n";
}
return a;
}
public string baseinfo()
{
string a="";
SelectQuery query=new SelectQuery("Select SerialNumber From Win32_BIOS");
ManagementObjectSearcher searcher=new ManagementObjectSearcher(query);
foreach(ManagementBaseObject disk in searcher.Get())
{
a = disk["SerialNumber"].ToString();
}
return a;
}

参考资料
msdn WMI SDK:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_reference.asp