C# 获取当前设备硬件信息

这篇具有很好参考价值的文章主要介绍了C# 获取当前设备硬件信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求描述

现在有这样一个需求:
我有A、B两台服务器,其中A是一个视频处理服务器,B是一个数据存储服务器。此时有一个视频需要先在A服务器上进行一系列处理后,再上传到B服务器上进行存储。

为了减少人工手动处理的工作量,A服务器需要主动向B发送数据,然后B服务器接收数据后进行存储,但是在这个过程中我不希望B服务器接收A服务器之外的其他端上传的数据,所以B在接收数据的时候就需要对数据的来源进行一个验证。

这里A服务器在上传数据时携带自身服务器的硬件信息,通过验证硬件信息的方法,能够确定数据来源是否是A服务器。

确定当前程序运行在那种平台上

IsOSPlatform 方法用于指示当前应用程序是否正在指定平台上运行:

public static bool IsOSPlatform (System.Runtime.InteropServices.OSPlatform osPlatform);

参数osPlatform表示一种操作系统平台:

value Description
FreeBSD 获取表示 FreeBSD 操作系统的对象
Linux 获取表示 Linux 操作系统的对象
OSX 获取表示 OSX 操作系统的对象
Windows 获取表示 Windows 操作系统的对象

ManagementObjectSearcher类获取硬件信息

ManagementObjectSearcher是一个构造函数,在使用之前需要引入命名空间using System Management,这个构造函数接收一个字符串作为参数,这个字符串一般写作"select * from" + key,这里key的值有多种:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + Key);
 // 常用Key值
// 硬件 
Win32_Processor, // CPU 处理器 
Win32_PhysicalMemory, // 物理内存条 
Win32_Keyboard, // 键盘 
Win32_PointingDevice, // 点输入设备,包括鼠标。 
Win32_FloppyDrive, // 软盘驱动器 
Win32_DiskDrive, // 硬盘驱动器 
Win32_CDROMDrive, // 光盘驱动器 
Win32_BaseBoard, // 主板 
Win32_BIOS, // BIOS 芯片 
Win32_ParallelPort, // 并口 
Win32_SerialPort, // 串口 
Win32_SerialPortConfiguration, // 串口配置 
Win32_SoundDevice, // 多媒体设置,一般指声卡。 
Win32_SystemSlot, // 主板插槽 (ISA & PCI & AGP) 
Win32_USBController, // USB 控制器 
Win32_NetworkAdapter, // 网络适配器 
Win32_NetworkAdapterConfiguration, // 网络适配器设置 
Win32_Printer, // 打印机 
Win32_PrinterConfiguration, // 打印机设置 
Win32_PrintJob, // 打印机任务 
Win32_TCPIPPrinterPort, // 打印机端口 
Win32_POTSModem, // MODEM 
Win32_POTSModemToSerialPort, // MODEM 端口 
Win32_DesktopMonitor, // 显示器 
Win32_DisplayConfiguration, // 显卡 
Win32_DisplayControllerConfiguration, // 显卡设置 
Win32_VideoController, // 显卡细节。 
Win32_VideoSettings, // 显卡支持的显示模式。 

// 操作系统 
Win32_TimeZone, // 时区 
Win32_SystemDriver, // 驱动程序 
Win32_DiskPartition, // 磁盘分区 
Win32_LogicalDisk, // 逻辑磁盘 
Win32_LogicalDiskToPartition, // 逻辑磁盘所在分区及始末位置。 
Win32_LogicalMemoryConfiguration, // 逻辑内存配置 
Win32_PageFile, // 系统页文件信息 
Win32_PageFileSetting, // 页文件设置 
Win32_BootConfiguration, // 系统启动配置 
Win32_ComputerSystem, // 计算机信息简要 
Win32_OperatingSystem, // 操作系统信息 
Win32_StartupCommand, // 系统自动启动程序 
Win32_Service, // 系统安装的服务 
Win32_Group, // 系统管理组 
Win32_GroupUser, // 系统组帐号 
Win32_UserAccount, // 用户帐号 
Win32_Process, // 系统进程 
Win32_Thread, // 系统线程 
Win32_Share, // 共享 
Win32_NetworkClient, // 已安装的网络客户端 
Win32_NetworkProtocol, // 已安装的网络协议 

示例代码

获取CPU序列号

private string GetServerCode()
        {
            string code = "";
            if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows))
            {
                ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Processor");

                foreach (ManagementObject mo in searcher.Get())
                {
                    code = mo["ProcessorId"].ToString().Trim();
                    break;
                }
            }
            else
            {
                code = ExecuteCommand("dmidecode -t Processor | grep ID | sort -u | awk -F':' '{print $2}'");
            }

            Console.WriteLine("serverCode:" + code);

            return (code ?? "").Replace(" ", "").Trim();
        }

在上面获取CPU序列号的示例代码中,首先创建了一个ManagementObjectSearcher对象,然后通过Get()方法获得ManagementObjectCollection集合,然后使用foreach方法遍历这个集合拿到ManagementObject数据,通过managementObject[name]或ManagementObject.GetPropertyValue(name)获得想要的属性。

不过在这之前我并不知道这个name的值具体填什么,这个时候只需要通过console打印一下就好了。文章来源地址https://www.toymoban.com/news/detail-407007.html

到了这里,关于C# 获取当前设备硬件信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c# 通过现在文件夹,获取下面所有的照片,并对其进行统一尺寸裁剪

    c# 通过现在文件夹,获取下面所有的照片,并对其进行统一尺寸裁剪 using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Syst

    2023年04月26日
    浏览(49)
  • JeecgBoot获取当前登录用户信息

    如果使用JeecgBoot项目进行开发的时候,有的场景需要获取当前登录人信息做一些逻辑操作 下面分享下通过前后端分别获取用户的方式 本质是使用vuex进行获取 引入store 使用store获取 org.apache.shiro.SecurityUtils 是使用了Apache Shiro框架的认证,所以这里直接使用SecurityUtils类来获取用

    2024年02月12日
    浏览(61)
  • 框架获取当前登录用户以及用户信息

    CSDN话题挑战赛第2期 参赛话题:学习笔记 📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端中级工程师 🔥 三连支持:如果此文还不错的话,还请 ❤️关注、👍点赞、👉收藏三连,支持一下博主~ 无论是哪一个框架,获取当前登录用户信息是必不

    2023年04月08日
    浏览(47)
  • C# 获取当前系统时间及时间格式详解

    C# 获取当前系统时间及时间格式详解 在 C# 编程中,获取当前系统时间是一个常见的操作。此外,对于时间的格式化也是开发中经常遇到的需求。本文将详细介绍如何使用 C# 获取当前系统时间,并对常用的时间格式进行解析和格式化。 获取当前系统时间 要获取当前系统时间

    2024年02月07日
    浏览(44)
  • C#获取当前程序所在路径的各种方法

    结果:X:xxxxxxxxx.exe(.exe文件所在的目录+.exe文件名) 结果:X:xxxxxxxxx.exe(.exe文件所在的目录+.exe文件名) 结果:X:xxxxxxxxx.exe(.exe文件所在的目录+.exe文件名) 结果:X:xxxxxx(.exe文件所在的目录) 结果:X:xxxxxx(.exe文件所在的目录) 结果:X:xxxxxx(.exe文件所在的

    2024年02月11日
    浏览(46)
  • C#如何获取当前主机的IP地址

    Dns 类提供了一组用于域名系统 (DNS) 操作的静态方法。 我们可以使用Dns.GetHostName()方法来获取本地计算机的主机名, 这是一个静态方法。该方法调用操作系统的网络栈,以获取计算机的主机名。主机名是一个用来标识网络上的设备的名称。在网络中,每个设备都有一个唯一的

    2024年02月12日
    浏览(34)
  • uniapp获取用户当前位置信息(第一节)

    本篇文章分享一下我在实际开发小程序时遇到的需要获取用户当前位置的问题,在小程序开发过程中经常使用到的获取定位功能。uniapp官方也提供了相应的API供我们使用。 官网地址:uni.getLocation(OBJECT)) 首先根据官网uni.getLocation(OBJECT))来获取地理位置信息 注意:这里面有个大

    2024年02月17日
    浏览(52)
  • iOS17.4获取UDID安装mobileconfig描述文件失败 提示“安全延迟进行中”问题 | 失窃设备保护

    iOS17.4这两天已经正式发布, 在iOS 17.4版本中新增了一个名为\\\"失窃设备保护\\\"的功能,并提供了一个\\\"需要安全延迟\\\"的选项。 iOS17.4获取UDID安装mobileconfig描述文件失败 提示“安全延迟进行中”问题 | 失窃设备保护 当用户选择启用该功能时,在离开熟悉位置时,iPhone会延迟一段时

    2024年04月24日
    浏览(41)
  • Windows获取硬件信息

    因项目需要,一直在网上调研获取Windows硬件信息的解决方案,要求稳定性高、可靠性强、兼容性好。在网上绝大多数的博主推荐使用WMIC获取硬件信息,WMIC是微软官方推出的一款Windows Management Instrumentation (WMI)命令行实用工具,在使用了一段时间后发现,WMIC在一些机器上会出

    2024年01月16日
    浏览(44)
  • jeecg 3.4.3前后端分离获取,前端获取当前登录人信息

    store —modules—user.js下 可以查看有哪些信息 2.1 //获取登录用户的信息 import user from ‘@/store/modules/user’ 2.2 export下 export default { user } 2.3 可以在created中直接打印信息 const user=user.state; console.log(“当前登录人:”,user.info.username); 2.4 只打印到user.info下,可以查看 { “id”: “2014-0

    2024年04月16日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包