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 HuaTong.General.Utility
{
internal enum WmiType
{
Win32_Processor,
Win32_PerfFormattedData_PerfOS_Memory,
Win32_PhysicalMemory,
Win32_NetworkAdapterConfiguration,
Win32_LogicalDisk
}
/// <summary>
/// 获取硬盘号和CPU号
/// </summary>
public class MachineNumber
{
static Dictionary<string, ManagementObjectCollection> WmiDict = new Dictionary<string, ManagementObjectCollection>();
static MachineNumber()
{
var names = Enum.GetNames(typeof(WmiType));
foreach (string name in names)
{
WmiDict.Add(name, new ManagementObjectSearcher("SELECT * FROM " + name).Get());
}
}
/// <summary>
/// 获取硬盘号码
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 获取CPU号码
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 获取内存编号
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 获取硬盘信息
/// </summary>
/// <returns></returns>
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}%可用;",
drive.Name,
string.Format("{0:F2}", val2 / val1 * 100),
drive.DriveFormat,
(long)val1,
(long)val2);
}
}
return sr.ToString();
}
/// <summary>
/// 获取操作系统信息
/// </summary>
/// <returns></returns>
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();
}
/// <summary>
/// 获取网卡信息
/// </summary>
/// <returns></returns>
//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();
//}
/// <summary>
/// 获取内存信息
/// </summary>
/// <returns></returns>
public static string MemoryInfo()
{
StringBuilder sr = new StringBuilder();
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);
return sr.ToString();
}
/// <summary>
/// 获取CPU信息
/// </summary>
/// <returns></returns>
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();
}
}
}
c# 获取机器硬件信息 (硬盘,cpu,内存等)
原创
©著作权归作者所有:来自51CTO博客作者hnsongbiao的原创作品,请联系作者获取转载授权,否则将追究法律责任
c# 获取机器硬件信息 (硬盘,cpu,内存等)
https://blog.51cto.com/u_6755950/5274708
c# 获取机器硬件信息 (硬盘,cpu,内存等)
https://blog.51cto.com/u_6755950/5274708
举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
c# 获取机器硬件信息(硬盘,cpu,内存等)
using System;using System
.net 当前目录 当前用户 -
如何选择适合的服务器【5大注意事项】?
如何选择适合的服务器【5大注意事项】?
服务器 数据库 服务器性能 -
C#获取CPU内存使用率
该程序为C#的winform1.后台代码using System;using System.Collections.Generic;using System.ComponentMod
c# winform CPU使用率 sed 物理内存 -
linux禁用CPU 禁用cpu内核
我的是2C8核(每个CPU4个核)/sys/devices/system/cpu 如图,一共8个(0~7)禁用第二个(第
进程内存 linux javascript