c# WMI获取机器硬件信息(硬盘,cpu,内存等) |
您所在的位置:网站首页 › wmic获取主板型号 › c# WMI获取机器硬件信息(硬盘,cpu,内存等) |
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Management;
using System.IO;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Text;
namespace UsbDemo
{
internal enum WmiType
{
Win32_Processor,
Win32_PerfFormattedData_PerfOS_Memory,
Win32_PhysicalMemory,
Win32_NetworkAdapterConfiguration,
Win32_LogicalDisk
}
///
/// 获取硬盘号和CPU号
///
public class WmiHelper
{
public class MachineNumber
{
static Dictionary WmiDict =
new Dictionary();
static MachineNumber()
{
var names = Enum.GetNames(typeof(WmiType));
foreach (string name in names)
{
WmiDict.Add(name, new ManagementObjectSearcher("SELECT * FROM " + name).Get());
}
}
///
/// 获取硬盘号码
///
///
public static string GetHardDiskNumber()
{
var query = WmiDict[WmiType.Win32_LogicalDisk.ToString()];
//var collection = query.Get();
string result = string.Empty;
foreach (var obj in query)
{
result = obj["VolumeSerialNumber"].ToString();
break;
}
return result;
}
///
/// 获取CPU号码
///
///
public static string GetCPUNumber()
{
var query = WmiDict[WmiType.Win32_Processor.ToString()];
//var collection = query.Get();
string result = string.Empty;
foreach (var obj in query)
{
result = obj["Processorid"].ToString();
break;
}
return result;
}
///
/// 获取内存编号
///
///
public static string GetMemoryNumber()
{
var query = WmiDict[WmiType.Win32_PhysicalMemory.ToString()];
//var collection = query.Get();
string result = string.Empty;
foreach (var obj in query)
{
result = obj["PartNumber"].ToString();
break;
}
return result;
}
///
/// 获取硬盘信息
///
///
public static string HardDiskInfo()
{
DriveInfo[] drives = DriveInfo.GetDrives();
StringBuilder sr = new StringBuilder();
foreach (DriveInfo drive in drives)
{
if (drive.IsReady)
{
var val1 = (double)drive.TotalSize / 1024 / 1024;
var val2 = (double)drive.TotalFreeSpace / 1024 / 1024;
sr.AppendFormat("{0}:{2}/{3}MB/{4}MB/{1}%可用;" + Environment.NewLine, drive.Name, string.Format("{0:F2}", val2 / val1 * 100), drive.DriveFormat, (long)val1, (long)val2);
}
}
return sr.ToString();
}
///
/// 获取操作系统信息
///
///
public static string OSInfo()
{
StringBuilder sr = new StringBuilder();
sr.AppendFormat("机器名:{0};操作系统:{1};系统文件夹:{2};语言:{3};.NET:{4};当前目录:{5};当前用户:{6};",
Environment.MachineName,
Environment.OSVersion,
Environment.SystemDirectory,
CultureInfo.InstalledUICulture.EnglishName,
Environment.Version,
Environment.CurrentDirectory,
Environment.UserName);
return sr.ToString();
}
///
/// 获取网卡信息
///
///
public static string NetworkInfo()
{
StringBuilder sr = new StringBuilder();
string host = Dns.GetHostName();
IPHostEntry ipEntry = Dns.GetHostByName(host);
sr.Append("IPv4:" + ipEntry.AddressList[0] + "/");
sr.Append("IPv6:");
ipEntry = Dns.GetHostEntry(host);
sr.Append("IPv6:" + ipEntry.AddressList[0] + ";");
sr.Append("MAC:");
var query = WmiDict[WmiType.Win32_NetworkAdapterConfiguration.ToString()];
foreach (var obj in query)
{
if (obj["IPEnabled"].ToString() == "True")
sr.Append(obj["MacAddress"] + ";");
}
return sr.ToString();
}
///
/// 获取内存信息
///
///
public static string MemoryInfo()
{
StringBuilder sr = new StringBuilder();
try
{
long capacity = 0;
var query = WmiDict[WmiType.Win32_PhysicalMemory.ToString()];
int index = 1;
foreach (var obj in query)
{
//sr.Append("内存" + index + "频率:" + obj["ConfiguredClockSpeed"] + ";");
capacity += Convert.ToInt64(obj["Capacity"]);
index++;
}
sr.Append("总物理内存:");
sr.Append(capacity / 1024 / 1024 + "MB;");
query = WmiDict[WmiType.Win32_PerfFormattedData_PerfOS_Memory.ToString()];
sr.Append("总可用内存:");
long available = 0;
foreach (var obj in query)
{
available += Convert.ToInt64(obj.Properties["AvailableMBytes"].Value);
}
sr.Append(available + "MB;");
sr.AppendFormat("{0:F2}%可用; ", (double)available / (capacity / 1024 / 1024) * 100);
}
catch (Exception ex)
{
sr.Append("异常信息:" + ex.Message);
}
return sr.ToString();
}
///
/// 获取CPU信息
///
///
public static string CpuInfo()
{
StringBuilder sr = new StringBuilder();
var query = WmiDict[WmiType.Win32_Processor.ToString()];
foreach (var obj in query)
{
sr.Append("厂商:" + obj["Manufacturer"] + ";");
sr.Append("产品名称:" + obj["Name"] + ";");
sr.Append("最大频率:" + obj["MaxClockSpeed"] + ";");
sr.Append("当前频率:" + obj["CurrentClockSpeed"] + ";");
}
return sr.ToString();
}
}
}
}
using System; using System.Management; namespace UsbDemo { /// /// USB控制设备类型 /// public struct ProcessInfo { /// /// USB控制器设备ID /// public String Antecedent; /// /// USB即插即用设备ID /// public String Dependent; } class ProcessWatcher { /// /// USB插入事件监视 /// private ManagementEventWatcher insertWatcher = null; /// /// USB拔出事件监视 /// private ManagementEventWatcher removeWatcher = null; /// /// 添加USB事件监视器 /// /// USB插入事件处理器 /// USB拔出事件处理器 /// 发送通知允许的滞后时间 public Boolean AddUSBEventWatcher(EventArrivedEventHandler usbInsertHandler, EventArrivedEventHandler usbRemoveHandler, TimeSpan withinInterval) { try { ////创建WQL事件查询,用于实例创建 //var qCreate = new WqlEventQuery("__InstanceCreationEvent",TimeSpan.FromSeconds(1),"TargetInstance ISA 'Win32_Process'"); ////创建WQL事件查询,用于实例删除 //var qDelete = new WqlEventQuery("__InstanceDeletionEvent",TimeSpan.FromSeconds(1), "TargetInstance ISA 'Win32_Process'"); ////创建事件查询的侦听器(ManagementEventWatcher) //var wCreate = new ManagementEventWatcher(qCreate); //var wDelete = new ManagementEventWatcher(qDelete); ////事件注册代码 //wCreate.EventArrived += (sender, e) => //{ // Console.WriteLine("运行:{0}", GetInfo(e.NewEvent)); //}; //wDelete.EventArrived += (sender, e) => //{ // Console.WriteLine("关闭:{0}", GetInfo(e.NewEvent)); //}; ////异步开始侦听 //wCreate.Start(); //wDelete.Start(); //Console.WriteLine("按任意键停止监控"); //Console.ReadKey(true); // 进程执行监视 if (usbInsertHandler != null) { WqlEventQuery InsertQuery = new WqlEventQuery("__InstanceCreationEvent", withinInterval, "TargetInstance ISA 'Win32_Process'"); insertWatcher = new ManagementEventWatcher( InsertQuery); insertWatcher.EventArrived += usbInsertHandler; insertWatcher.Start(); } // 进程结束监视 if (usbRemoveHandler != null) { WqlEventQuery RemoveQuery = new WqlEventQuery("__InstanceDeletionEvent", withinInterval, "TargetInstance ISA 'Win32_Process'"); removeWatcher = new ManagementEventWatcher( RemoveQuery); removeWatcher.EventArrived += usbRemoveHandler; removeWatcher.Start(); } return true; } catch (Exception) { RemoveUSBEventWatcher(); return false; } } /// /// 移去USB事件监视器 /// public void RemoveUSBEventWatcher() { if (insertWatcher != null) { insertWatcher.Stop(); insertWatcher = null; } if (removeWatcher != null) { removeWatcher.Stop(); removeWatcher = null; } } //输出事件对应的ManagementBaseObject(本例中的Win32_Process实例)的信息 static string GetInfo(ManagementBaseObject mobj) { var instance = (ManagementBaseObject)mobj["TargetInstance"]; return string.Format("{0} - {1}", instance["Name"], DateTime.Now); } /// /// 定位发生插拔的USB设备 /// /// USB插拔事件参数 /// 发生插拔现象的USB控制设备ID public static ProcessInfo[] WhoControllerDevice(EventArrivedEventArgs e) { ManagementBaseObject instance = e.NewEvent["TargetInstance"] as ManagementBaseObject; return new ProcessInfo[1] { new ProcessInfo { Antecedent = instance["Name"].ToString(), Dependent = instance["Name"].ToString() } }; } } }
http://blog.csdn.net/asciil/article/details/6931429 http://www.cnblogs.com/password1/p/5870751.html |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |