首页 > 编程语言 >c# 系统信息

c# 系统信息

时间:2024-06-15 17:43:08浏览次数:29  
标签:c# 系统 System 信息 item Add ToString using pcInformation

using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Text;
using System.Management;
using System.IO;
using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;

namespace GetPCInformation
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();

p. GetCPUSerialNumber();
p.GetPhy();
// Console.WriteLine(p.pcInformation["memoryModel"]);
p.GetDriverInfo();
p.GetIP();

foreach (var item in p.pcInformation)
{
Console.WriteLine(item.Key+":"+item.Value);
}
Console.Read();
}
Dictionary<string, string> pcInformation = new Dictionary<string, string>();
Dictionary<string, string> driverInformation = new Dictionary<string, string>();

/// <summary>
/// CPU 型号/系统bit/系统名
/// </summary>
public void GetCPUSerialNumber()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Processor");

foreach (ManagementObject mo in searcher.Get())
{
pcInformation.Add("OSName", mo["SystemName"].ToString().Trim());//系统名
pcInformation.Add("CPUName", mo["Name"].ToString().Trim()); //处理器名称
pcInformation.Add("OSBit", mo["AddressWidth"].ToString().Trim());// 系统位数
}
foreach (var o in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get())
{
var obj = (ManagementObject)o;

// Microsoft Windows 11 企业版
var caption = obj.GetPropertyValue("Caption");

// 10.0.22000
var version = obj.GetPropertyValue("Version");
pcInformation.Add("version", caption.ToString());
pcInformation.Add("version2", version.ToString());
break;
}
pcInformation.Add("userName", Environment.UserName);
pcInformation.Add("netWork", SystemInformation.Network ?"已连接":"未连接");

}
catch (Exception e)
{
Console.WriteLine(e.Message); ;
}

}
/// <summary>
/// 获取内存大小/可用内存/已使用内存
/// </summary>
public void GetPhy()
{
try
{
ManagementClass cimobject1 = new ManagementClass("Win32_PhysicalMemory");
ManagementObjectCollection moc1 = cimobject1.GetInstances();
double available = 0, capacity = 0;
foreach (ManagementObject mo1 in moc1)
{
capacity += ((Math.Round(Int64.Parse(mo1.Properties["Capacity"].Value.ToString()) / 1024 / 1024 / 1024.0, 1)));
}
moc1.Dispose();
cimobject1.Dispose();


//获取内存可用大小
ManagementClass cimobject2 = new ManagementClass("Win32_PerfFormattedData_PerfOS_Memory");
ManagementObjectCollection moc2 = cimobject2.GetInstances();
foreach (ManagementObject mo2 in moc2)
{
available += ((Math.Round(Int64.Parse(mo2.Properties["AvailableMBytes"].Value.ToString()) / 1024.0, 1)));

}
moc2.Dispose();
cimobject2.Dispose();
ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_PhysicalMemory");
ManagementObjectCollection.ManagementObjectEnumerator moe = mos.Get().GetEnumerator();
moe.MoveNext();

Console.WriteLine();
pcInformation.Add("memoryMfrs", moe.Current.Properties["Manufacturer"].Value.ToString());
pcInformation.Add("memorySum", capacity.ToString().Trim() + "G");
pcInformation.Add("memoryAvailable", available.ToString().Trim() + "G");
pcInformation.Add("memoryUsed", ((capacity - available)).ToString() + "G," + (Math.Round((capacity - available) / capacity * 100, 0)).ToString() + "%");

}
catch (Exception e)
{
Console.WriteLine(e.Message); ;
}
}
/// <summary>
/// 获取硬盘 使用情况
/// </summary>
public void GetDriverInfo() {
List<string> list = new List<string>();
foreach (DriveInfo item in DriveInfo.GetDrives())
{
if (item.DriveType == DriveType.Fixed)
{
long total = item.TotalSize / (1024 * 1024 * 1024);
long free = item.TotalFreeSpace / (1024 * 1024 * 1024);
list.Add(item.Name.ToString() +"," + total.ToString());
driverInformation.Add(item.Name, total.ToString() + "G-" + free.ToString() + "G-" + (1 - Math.Round(free * 1.0 / total, 2)) * 100 + "%");
double rate = Math.Round(free * 1.0 / total,2);
Console.WriteLine(item.Name+total.ToString() + "G-" + free.ToString() + "G-" + (1-Math.Round(free * 1.0 / total, 2))*100 + "%");
}
}
}
/// <summary>
/// 获取IP地址和MAC地址
/// </summary>
public void GetIP()
{

try
{

string name = Dns.GetHostName();
IPAddress[] ipadrlist = Dns.GetHostAddresses(name);
foreach (IPAddress ipa in ipadrlist)
{
if (ipa.AddressFamily == AddressFamily.InterNetwork)
pcInformation.Add("IP", ipa.ToString());
}
//创建ManagementClass对象
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
string macAddress = string.Empty;
foreach (ManagementObject mo in moc)//遍历获取的集合
{
if ((bool)mo["IPEnabled"])//判断IPEnabled的属性是否为true
{
macAddress = mo["MacAddress"].ToString();//获取网卡的序列号
}
}
pcInformation.Add("MAC", macAddress.ToString());
}
catch (Exception e)
{
//这里写异常的处理(最好写入日志文件)
Console.WriteLine(e.Message);
}
}



}
}

标签:c#,系统,System,信息,item,Add,ToString,using,pcInformation
From: https://www.cnblogs.com/l-xs/p/18249548

相关文章

  • 一篇文章教你如何解决vs编译器中,库函数scanf的正常使用!!!
    前言:这将是我写的第二篇博文了,以后我将会坚持每天花固定时间来写博客,希望我当我写了一定数量的文章之后,我自己简单的就能够写出质量优秀文章来,加油!!!一、scanf函数无法正常使用的原因1.错误实例在vs中如果想直接实现并使用scanf函数,很抱歉直接使用,用不了,因为编译器压根就......
  • 生产环境使用10053分析Oracle的执行计划
    【问题现象】在SQL出现性能问题后,通过分析统计信息、直方图、SQLAWR、查看执行计划等,仍然找不出为什么SQL要选择差的执行计划,就需要通过10053查看这个SQL的执行计划的更详细的信息。【操作方法】通过10053事件来查看执行计划和详细的SQL解析过程,10053的trace文件提供了Oracle......
  • 算法训练(leetcode)第九天 | 232. 用栈实现队列、225. 用队列实现栈、20. 有效的括号、1
    刷题记录232.用栈实现队列225.用队列实现栈20.有效的括号1047.删除字符串中的所有相邻重复项232.用栈实现队列leetcode题目地址考察栈与队列之间的特性。栈:后进先出(先进后出)——FILO。队列:先进先出——FIFO。所以使用两个栈模拟队列,分别为in和out。当入队新......
  • 这个vue3的后台管理系统虽然简洁但不简单
    今天介绍一个新的Vue后台管理框架,相比其他后台功能丰富管理系统,这个后台管理系统可以用干净简洁来形容——Nova-admin Nova-adminNova-admin 是一个基于Vue3、Vite5等最新技术的后台管理平台。用简单的方式实现完整功能,并尽可能的考虑代码规范,易读易理解无过度封装,方便二次......
  • Docker 入门
    Docker是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的运行环境到一个可移植的容器中。以下是学习Docker的推荐路线:###入门阶段1.**了解容器化的概念**:  -容器化与虚拟化的区别  -容器化的优势2.**Docker简介**:  -Docker的历史和目标......
  • C++学习手册
    创建一份全面的C++学习手册是一个庞大的任务,但这里我可以为你提供一个基础的大纲和一些关键点,以帮助你开始学习C++。###C++学习手册大纲####第一部分:C++简介1.C++的历史与发展2.C++的特点3.C++的应用领域4.开发环境的搭建####第二部分:基础语法1.基本数据类型2......
  • HIT计算机系统CSAPP期末大作业
                                            计算机系统大作业题    目  程序人生-Hello’sP2P 专      业     数据科学与大数据技术                  学  号     202......
  • mac上解决command not found: code问题
    目录1.为什么会出现这个问题2.解决问题的两种办法2.1前提条件2.2方法一:在配置文件中增加环境变量2.3方法二:直接在软件中设置添加环境变量1.为什么会出现这个问题        这个错误表示在Mac终端中输入了code命令,但是系统找不到这个命令。这通常发生在尝......
  • LoRa模块如何实现智能灌溉系统的精准灌溉
    LoRa模块在智能灌溉系统中的应用特点主要体现在低功耗、远程监控与控制、精准灌溉、高穿透性和稳定性、多节点支持、数据安全性以及灵活扩展等方面。这些特点使得LoRa模块成为智能灌溉系统中不可或缺的一部分,为农业生产提供了更加智能化、精准化的解决方案。本文将简介LoRa模块如......
  • Linux文件系统【真的很详细】
    目录 一.认识磁盘1.1磁盘的物理结构1.2磁盘的存储结构1.3磁盘的逻辑存储结构二.理解文件系统 2.1如何管理磁盘2.2如何在磁盘中找到文件 2.3关于文件名哈喽,大家好。今天我们学习文件系统,我们之前在Linux基础IO中研究的是进程和被打开文件之间的关系,以及如何管理被......