System.Management
是一个用于访问和管理 Windows 系统信息的命名空间,基于 Windows Management Instrumentation (WMI) 提供了丰富的管理功能。
在项目中选择“引用”(Reference)->“程序集”(Assemblies),勾选“System.Management”。
对于 .NET 6.0 或更高版本,System.Management
命名空间已被移除,可以通过 NuGet 安装 System.Management
包:
dotnet add package System.Management
示例展示了如何查询系统信息:
using System;
using System.Management;
classProgram
{
static void Main(string[] args)
{
Console.WriteLine("=== 系统信息查询 ===");
// 查询操作系统信息
QueryOperatingSystem();
// 查询 CPU 信息
QueryProcessor();
// 查询内存信息
QueryMemory();
// 查询磁盘信息
QueryLogicalDisk();
// 查询进程信息
QueryProcesses();
Console.WriteLine("=== 查询结束 ===");
Console.ReadLine();
}
/// <summary>
/// 查询操作系统信息
/// </summary>
static void QueryOperatingSystem()
{
Console.WriteLine("\n=== 操作系统信息 ===");
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"))
{
foreach (ManagementObject obj in searcher.Get())
{
Console.WriteLine($"操作系统: {obj["Caption"]}");
Console.WriteLine($"版本: {obj["Version"]}");
Console.WriteLine($"安装日期: {Convert.ToDateTime(obj["InstallDate"])}");
Console.WriteLine($"最后启动时间: {Convert.ToDateTime(obj["LastBootUpTime"])}");
}
}
}
/// <summary>
/// 查询 CPU 信息
/// </summary>
static void QueryProcessor()
{
Console.WriteLine("\n=== CPU 信息 ===");
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"))
{
foreach (ManagementObject obj in searcher.Get())
{
Console.WriteLine($"CPU: {obj["Name"]}");
Console.WriteLine($"核心数: {obj["NumberOfCores"]}");
Console.WriteLine($"主频: {obj["MaxClockSpeed"]} MHz");
}
}
}
/// <summary>
/// 查询内存信息
/// </summary>
static void QueryMemory()
{
Console.WriteLine("\n=== 内存信息 ===");
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem"))
{
foreach (ManagementObject obj in searcher.Get())
{
Console.WriteLine($"总物理内存: {Convert.ToUInt64(obj["TotalPhysicalMemory"]) / (1024 * 1024 * 1024)} GB");
}
}
}
/// <summary>
/// 查询磁盘信息
/// </summary>
static void QueryLogicalDisk()
{
Console.WriteLine("\n=== 磁盘信息 ===");
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk WHERE DriveType=3")) // DriveType=3 表示本地磁盘
{
foreach (ManagementObject obj in searcher.Get())
{
Console.WriteLine($"盘符: {obj["DeviceID"]}");
Console.WriteLine($"总大小: {Convert.ToUInt64(obj["Size"]) / (1024 * 1024 * 1024)} GB");
Console.WriteLine($"剩余空间: {Convert.ToUInt64(obj["FreeSpace"]) / (1024 * 1024 * 1024)} GB");
Console.WriteLine($"文件系统: {obj["FileSystem"]}");
}
}
}
/// <summary>
/// 查询进程信息
/// </summary>
static void QueryProcesses()
{
Console.WriteLine("\n=== 进程信息 ===");
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Process"))
{
foreach (ManagementObject obj in searcher.Get())
{
Console.WriteLine($"进程名: {obj["Name"]}");
Console.WriteLine($"进程ID: {obj["ProcessId"]}");
if (obj["ExecutablePath"] != null)
Console.WriteLine($"路径: {obj["ExecutablePath"]}");
Console.WriteLine("---");
}
}
}
}
=== 系统信息查询 ===
=== 操作系统信息 ===
操作系统: Microsoft Windows 11 专业版
版本: 10.0.26100
安装日期: 2025/1/16 17:44:24
最后启动时间: 2025/1/17 12:27:07
=== CPU 信息 ===
CPU: 13th Gen Intel(R) Core(TM) i5-13400
核心数: 10
主频: 2500 MHz
=== 内存信息 ===
总物理内存: 15 GB
=== 磁盘信息 ===
盘符: C:
总大小: 199 GB
剩余空间: 29 GB
文件系统: NTFS
盘符: D:
总大小: 731 GB
剩余空间: 321 GB
文件系统: NTFS
=== 进程信息 ===
进程名: System Idle Process
进程ID: 0
---
进程名: System
进程ID: 4
---
...
System.Management
需要管理员权限,某些操作可能需要提升权限。