System.Management是一个用于访问和管理 Windows 系统信息的命名空间,基于 Windows Management Instrumentation (WMI) 提供了丰富的管理功能。.NET Framework 项目摘要:System.Management是一个用于访问和管理 Windows 系统信息的命名空间,基于 Windows Management Instrumentation (WMI) 提供了丰富的管理功能。
在项目中选择“引用”(Reference)->“程序集”(Assemblies),勾选“System.Management”。
.NET Core/.NET 5+ 项目对于 .NET 6.0 或更高版本,命名空间已被移除,可以通过 NuGet 安装包:dotnet add package System.Management示例展示了如何查询系统信息:
using System;using System.Management;
classProgram
{
static voidMain(string args)
{
Console.WriteLine("=== 系统信息查询 ===");
// 查询操作系统信息
QueryOperatingSystem;
// 查询 CPU 信息
QueryProcessor;
// 查询内存信息
QueryMemory;
// 查询磁盘信息
QueryLogicalDisk;
// 查询进程信息
QueryProcesses;
Console.WriteLine("=== 查询结束 ===");
Console.ReadLine;
}
///
/// 查询操作系统信息
///
static voidQueryOperatingSystem
{
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"])}");
}
}
}
///
/// 查询 CPU 信息
///
static voidQueryProcessor
{
Console.WriteLine("\n=== CPU 信息 ===");
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"))
{
{
Console.WriteLine($"CPU: {obj["Name"]}");
Console.WriteLine($"核心数: {obj["NumberOfCores"]}");
Console.WriteLine($"主频: {obj["MaxClockSpeed"]} MHz");
}
}
}
///
/// 查询内存信息
///
static voidQueryMemory
{
Console.WriteLine("\n=== 内存信息 ===");
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem"))
{
{
Console.WriteLine($"总物理内存: {Convert.ToUInt64(obj["TotalPhysicalMemory"]) / (1024*1024*1024)} GB");
}
}
}
///
/// 查询磁盘信息
///
static voidQueryLogicalDisk
{
Console.WriteLine("\n=== 磁盘信息 ===");
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk WHERE DriveType=3"))// DriveType=3 表示本地磁盘
{
{
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"]}");
}
}
}
///
/// 查询进程信息
///
static voidQueryProcesses
{
Console.WriteLine("\n=== 进程信息 ===");
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Process"))
{
{
Console.WriteLine($"进程名: {obj["Name"]}");
Console.WriteLine($"进程ID: {obj["ProcessId"]}");
if (obj["ExecutablePath"] != )
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需要管理员权限,某些操作可能需要提升权限。
• WMI 查询可能会比较耗时,建议在后台线程中执行。
• 对于高频率查询,考虑缓存结果以提高性能。
• System.PlatformNotSupportedException:“System.Management currently is only supported for Windows desktop applications.” :可以将目标框架设置为 net8.0-windows
Net分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节。
来源:opendotnet
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!