程序员的知识教程库

网站首页 > 教程分享 正文

System).Management 概述

henian88 2025-03-13 15:40:45 教程分享 54 ℃ 0 评论

System.Management 是一个用于访问和管理 Windows 系统信息的命名空间,基于 Windows Management Instrumentation (WMI) 提供了丰富的管理功能。

安装或引用

.NET Framework 项目

在项目中选择“引用”(Reference)->“程序集”(Assemblies),勾选“System.Management”。

.NET Core/.NET 5+ 项目

对于 .NET 6.0 或更高版本,System.Management 命名空间已被移除,可以通过 NuGet 安装 System.Management 包:

dotnet add package System.Management

常用 WMI 类

  • o Win32_OperatingSystem: 获取操作系统信息
  • o Win32_Processor: 获取 CPU 信息
  • o Win32_DiskDrive: 获取磁盘驱动器信息
  • o Win32_Service: 获取系统服务信息
  • o Win32_Process: 获取进程信息
  • o Win32_NetworkAdapter: 获取网络适配器信息
  • o Win32_LogicalDisk: 获取逻辑磁盘(如 C: 盘)信息

示例

示例展示了如何查询系统信息:

using System;
using System.Management;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("=== 系统信息查询 ===");

        // 查询操作系统信息
        QueryOperatingSystem();

        // 查询 CPU 信息
        QueryProcessor();

        // 查询内存信息
        QueryMemory();

        // 查询磁盘信息
        QueryLogicalDisk();

        // 查询进程信息
        QueryProcesses();

        Console.WriteLine("=== 查询结束 ===");
        Console.ReadLine();
    }

    /// 
    /// 查询操作系统信息
    /// 
    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"])}");
            }
        }
    }

    /// 
    /// 查询 CPU 信息
    /// 
    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");
            }
        }
    }

    /// 
    /// 查询内存信息
    /// 
    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");
            }
        }
    }

    /// 
    /// 查询磁盘信息
    /// 
    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"]}");
            }
        }
    }

    /// 
    /// 查询进程信息
    /// 
    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/2/2 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
---
...

注意事项

  • o 使用 System.Management 需要管理员权限,某些操作可能需要提升权限。
  • o WMI 查询可能会比较耗时,建议在后台线程中执行。
  • o 对于高频率查询,考虑缓存结果以提高性能。
  • o System.PlatformNotSupportedException:“System.Management currently is only supported for Windows desktop applications.” :可以将目标框架设置为 net8.0-windows

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表