通过WMI获取硬件和系统信息

WMI(Windows Management Instrumentation)是一个Windows管理技术支持,最初在1998年作为Windows NT 4.0 Service Pack 4一起发行(参见:http://msdn.microsoft.com/zh-cn/library/ms974579.aspx)。我们通过它可以得到几乎Windows系统的全部信息(如硬件环境、操作系统信息、服务信息等等),通过.NET Framework提供的System.Management库便可以利用。

关于WMI的更多介绍:http://msdn.microsoft.com/en-us/library/aa394582.aspx

下面是一个通过WMI获取硬件信息的代码,直接用csc.exe编译成控制台程序即可。

/* 通过WMI获取硬件信息(CPU、BIOS、网卡、磁盘) * Oyi319|Bob * BLOG:http://blog.csdn.net/oyi319/archive/2011/03/22/6268438.aspx * * 参考: * http://blogs.technet.com/b/heyscriptingguy/archive/2009/03/03/how-do-i-find-the-names-of-wmi-classes.aspx * http://msdn.microsoft.com/zh-cn/library/ms974592.aspx */ using System; using System.Collections; using System.Management; using System.Text; class Program { static void Main() { //Console.Title = "获取硬件信息"; Console.Write(SystemManagement.CpuInfo()); Console.Write(SystemManagement.BiosInfo()); Console.Write(SystemManagement.NetworkAdapterInfo()); Console.Write(SystemManagement.DiskDriveInfo()); //Console.Write("BLOG:http://blog.csdn.net/oyi319/archive/2011/03/22/6268438.aspx"); //Console.ReadLine(); } } public static class SystemManagement { private static string GetInfo(string className) { var sb = new StringBuilder(); try { var mc = new ManagementClass(className); var moc = mc.GetInstances(); sb.AppendLine(mc.Path.ClassName); var format = " {0,-30}{1}"; var formatLine = format + Environment.NewLine; foreach (var mo in moc) { foreach (var property in mo.Properties) { var enumerableValue = property.Value as IEnumerable; if (enumerableValue != null && !(enumerableValue is String)) { sb.AppendFormat(format, property.Name, "多项:"); var format1 = "{0:x} "; foreach (var value in enumerableValue) { sb.AppendFormat(format1, value); } sb.AppendLine(); } else { sb.AppendFormat(formatLine, property.Name, property.Value ?? "未知"); } } sb.AppendLine(); } } catch { } return sb.ToString(); } public static string CpuInfo() { return GetInfo("Win32_Processor"); } public static string BiosInfo() { return GetInfo("Win32_BIOS"); } public static string NetworkAdapterInfo() { return GetInfo("Win32_NetworkAdapter"); } public static string DiskDriveInfo() { return GetInfo("Win32_DiskDrive"); } }

效果图:

关于WMI对象的类名,可以通过PowerShell的下面命令获得:

Get-WmiObject -List|Out-File C:\GetWmiObjectList.txt

请阅读:http://blogs.technet.com/b/heyscriptingguy/archive/2009/03/03/how-do-i-find-the-names-of-wmi-classes.aspx

也可使用这个软件:

Scriptomatic

http://technet.microsoft.com/en-us/scriptcenter/dd939957.aspx

下载地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=09dfc342-648b-4119-b7eb-783b0f7d1178&DisplayLang=en

----

附一些WMI类:

操作系统:Win32_OperatingSystem

进程:Win32_Process

用户帐户:Win32_UserAccount

磁盘卷:Win32_Volume

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值