获取计算机内部信息 - ComputerInfoHelper

  电脑有许多信息,如名称、CPU 和硬盘容量等,整理一个 Helper 来获取,下面目前只整理了一个方法,获取其它信息的方法类似。

一、代码

  ComputerInfoHelper.cs

using System;
using System.Linq;
using System.Management;
using Wen.Helpers.Common.Computer.Config; namespace Wen.Helpers.Common.Computer
{
/// <summary>
/// 计算机信息助手类
/// </summary>
public class ComputerInfoHelper
{
/// <summary>
/// 获取硬盘容量汇总
/// </summary>
public static long GetTotalDiskSize()
{
try
{
var diskDriveManagement = new ManagementClass(WmiPath.DiskDrive);
var diskDriveManagementInstances = diskDriveManagement.GetInstances(); return diskDriveManagementInstances.OfType<ManagementObject>()
.Select(managementObject => Convert.ToInt64(managementObject[ManagementBaseObjectPropertyName.Size]))
.Aggregate<long, long>(, (current, diskSize) => diskSize + current);
}
catch(Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
}

  ManagementBaseObjectPropertyName.cs

namespace Wen.Helpers.Common.Computer.Config
{
public class ManagementBaseObjectPropertyName
{
/// <summary>
/// 名称
/// </summary>
public const string ComputerName = "Name"; /// <summary>
/// 显卡芯片
/// </summary>
public const string VideoProcessor = "VideoProcessor"; /// <summary>
/// 显存大小
/// </summary>
public const string AdapterRam = "AdapterRAM"; /// <summary>
/// 分辨率宽
/// </summary>
public const string ScreenWidth = "ScreenWidth"; /// <summary>
/// 分辨率高
/// </summary>
public const string ScreenHeight = "ScreenHeight"; /// <summary>
/// 电脑型号
/// </summary>
public const string Version = "Version"; /// <summary>
/// 硬盘容量
/// </summary>
public const string Size = "Size"; /// <summary>
/// 内存容量
/// </summary>
public const string Capacity = "Capacity"; /// <summary>
/// cpu 核心数
/// </summary>
public const string NumberOfCores = "NumberOfCores";
}
}

  WmiPath.cs

namespace Wen.Helpers.Common.Computer.Config
{
public class WmiPath
{
/// <summary>
/// 内存
/// </summary>
public const string PhysicalMemory = "Win32_PhysicalMemory"; /// <summary>
/// cpu
/// </summary>
public const string Processor = "Win32_Processor"; /// <summary>
/// 硬盘
/// </summary>
public const string DiskDrive = "win32_DiskDrive"; /// <summary>
/// 电脑型号
/// </summary>
public const string ComputerSystemProduct = "Win32_ComputerSystemProduct"; /// <summary>
/// 分辨率
/// </summary>
public const string DesktopMonitor = "Win32_DesktopMonitor"; /// <summary>
/// 显卡
/// </summary>
public const string VideoController = "Win32_VideoController"; /// <summary>
/// 操作系统
/// </summary>
public const string OperatingSystem = "Win32_OperatingSystem";
}
}

二、测试

  1.电脑硬盘信息

  2.我的电脑中的硬盘信息

  3.测试代码

  4.输出结果:

  所有硬盘及 U 盘和存储卡,因生产厂家的计算方式和操作系统的计算方式不一样,前者按 1MB = 1000KB 计算,后者按 1MB = 1024KB 计算,所以,实际在电脑中看到的容量会与厂商标称的容量有一定的差异,其中规律为 1G = 0.93G (约等于),比如 100G,实际为 100G * 0.93 = 93G ,具体容量可参考此公式计算。

  GitHub:https://github.com/liqingwen2015/Wen.Helpers/tree/liqw_home/Wen.Helpers.Common/Computer

[C#] 获取计算机内部信息 - ComputerInfoHelper的更多相关文章

  1. python wmi模块 获取windows内部信息

    WMI (Windows Management Instrumentation) 模块可用于获取 Windows 内部信息,在使用Python获取Windows系统上的相关的信息可以使用WMI接口来获 ...

  2. 完善DriveInfoEx源代码 获取计算机硬盘序列号

    概述: 获取计算机硬盘序列号用途很多,在网上找到了一个C++的源代码DriveInfoEx(点这里查看).非常好的一个DLL,.NET项目可以直接引用,而且源代码里有示例. 但这个DLL在Win7非管 ...

  3. 通过js获取计算机内网ip,计算机名,mac地址

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  4. JAVA获取计算机的IP、名称、操作系统等信息

    [java] view plaincopyprint? import java.io.BufferedReader; import java.io.InputStream; import java.i ...

  5. JAVA获取计算机CPU、硬盘、主板、网络等信息

    通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...

  6. Python 获取计算机全名(fully qualified host name)

    Python 获取计算机全名(fully qualified host name) import socket socket.getfqdn() socket.gethostname()

  7. [Java]通过java获取计算机名

    通过java获取计算机名 String hostname = "Unknown"; try { InetAddress addr; addr = InetAddress.getLo ...

  8. C# 获取计算机cpu,硬盘,内存相关的信息

    using System;using System.Management; namespace MmPS.Common.Helper{ /// <summary> /// 获取计算机相关的 ...

  9. 使用Python获取计算机名,ip地址,mac地址等等

    获取计算机名 # 获取计算机名,常用的方法有三种 import os import socket # method one name = socket.gethostname() print(name ...

随机推荐

  1. Redux入门示例-TodoList

    Tip 前端技术真是日新月异,搞完 React 不搭配个数据流都不好意思了.满怀期待的心去翻了翻 flux,简直被官方那意识流的文档折服了,真是又臭又长还是我智商问题?

  2. Hadoop(十五)MapReduce程序实例

    一.统计好友对数(去重) 1.1.数据准备 joe, jon joe , kia joe, bob joe ,ali kia, joe kia ,jim kia, dee dee ,kia dee, ...

  3. BZOJ:4827: [Hnoi2017]礼物

    [问题描述] 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度. 但是在她生日的 ...

  4. 51 Nod 1029 大数除法【Java大数乱搞】

    1029 大数除法 基准时间限制:4 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 给出2个大整数A,B,计算A / B和A Mod B的结果.   Input 第1行:大数A ...

  5. [51nod1410]回文调整

    给一个序列,选择其中一个区间,这个区间内的数字顺序可以随意互换.问有多少这样的选择使得整个序列(不是选择的区间)是一个回文. 说明:为了要使得整个序列是一个回文,可以选择一个区间对里面的数字进行调整, ...

  6. I Hate It(线段树点修改区间查询)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 I Hate It Time Limit: 9000/3000 MS (Java/Others) ...

  7. More is better(并查集)

    http://acm.hdu.edu.cn/showproblem.php?pid=1856 More is better Time Limit: 5000/1000 MS (Java/Others) ...

  8. $(function(){...});的作用

    这是JQuery的语法,$表示JQuery对象,可以有好几种用法.比如传递选择器字符串.页面对象等,如果直接传函数体进去,表示网页加载完毕后要执行的意思.和JAVASCRIPT原来的这个是一样的: w ...

  9. c++(排序二叉树插入)

    二叉树的节点插入比较简单.一般来说,二叉树的插入主要分为以下两个步骤: 1) 对当前的参数进行判断,因为需要考虑到头结点,所以我们使用了指针的指针作为函数的输入参数 2) 分情况讨论: 如果原来二叉树 ...

  10. [国嵌攻略][103][Linux内核模块基础]

    什么是内核模块 Linux内核的整体结构非常庞大,其中包含的组件也非常多,如何使用这些组件.一种方式是把所有的组件都编译进内核文件,即zImage或bzImage,但这样会导致一个问题,占用内存过多. ...