LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

使用C#获取系统关键信息:CPU、内存、硬盘、用户与网络状态

admin
2024年10月17日 23:5 本文热度 102

在C#中,获取系统信息如CPU、内存、硬盘、用户以及网络状态等,可以通过多种方式实现,包括使用System.Management命名空间中的类来查询WMI(Windows Management Instrumentation)信息,或者使用.NET Framework自带的类库。以下是一些基本示例来展示如何获取这些信息。

1. 引入必要的命名空间

首先,确保项目中引入了必要的命名空间。对于WMI查询,需要引入System.Management。

using System;using System.Management; // 需要添加对System.Management的引用using System.Collections.Generic;

2. 获取CPU信息

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
foreach (ManagementObject obj in searcher.Get()){    Console.WriteLine("Name: " + obj["Name"]);    Console.WriteLine("CurrentClockSpeed: " + obj["CurrentClockSpeed"]);    // 还可以获取更多属性,如NumberOfCores, NumberOfLogicalProcessors等}

3. 获取内存信息

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMemory");

foreach (ManagementObject obj in searcher.Get()){    Console.WriteLine("Capacity: " + obj["Capacity"]);    // 注意Capacity的单位是字节,可能需要转换成KB、MB或GB}
// 获取总物理内存(MB)ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT TotalVisibleMemorySize FROM Win32_OperatingSystem");foreach (ManagementObject mo in mos.Get()){    Console.WriteLine("Total Physical Memory: " + (Convert.ToDouble(mo["TotalVisibleMemorySize"]) / 1024 / 1024) + " MB");}

4. 获取硬盘信息

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk WHERE DriveType=3"); // 3 代表本地硬盘
foreach (ManagementObject mo in searcher.Get()){    Console.WriteLine("Disk Name: " + mo["Name"]);    Console.WriteLine("Total Size: " + (Convert.ToDouble(mo["Size"]) / 1024 / 1024 / 1024) + " GB");    Console.WriteLine("Free Space: " + (Convert.ToDouble(mo["FreeSpace"]) / 1024 / 1024 / 1024) + " GB");}

5. 获取当前用户信息

通常,获取当前登录的用户信息不需要WMI,可以使用.NET Framework的类。

System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);// 在Windows Vista及以上版本,可以使用IsInRole来判断用户是否属于某个组bool isAdmin = principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
Console.WriteLine("User Name: " + identity.Name);Console.WriteLine("Is Admin: " + isAdmin);

6. 获取网络状态

获取网络状态比较复杂,因为涉及到多个方面,如网络接口、IP地址、是否连接等。以下是一个获取网络接口列表的示例。

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus = 2"); // 2 代表已连接
foreach (ManagementObject obj in searcher.Get()){    Console.WriteLine("Adapter Name: " + obj["Name"]);    // 可以获取更多属性,如MAC地址、IP地址等}

注意:WMI查询可能需要管理员权限,特别是在访问某些敏感信息时。

此外,对于网络状态的详细查询(如IP地址、DNS信息等),可能需要使用Win32_NetworkAdapterConfiguration类或其他相关WMI类。


该文章在 2024/10/19 12:12:17 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved