首页 > 系统相关 >获取Windows设备CPUID信息

获取Windows设备CPUID信息

时间:2024-06-17 19:00:53浏览次数:28  
标签:info Windows cpu 获取 int 处理器 CPUID id

CPUID

目录

简介


  1. CPUID 是一个 CPU(中央处理器)的指令,用于获取处理器的详细信息。它通常用于操作系统、虚拟机监控程序(如虚拟机管理程序或超级监视器)、调试程序和性能分析工具等,来获取关于处理器硬件特性和支持的指令集等信息。
  2. 作用:
    1. 识别处理器:CPUID 指令允许软件识别当前系统中的处理器类型和制造商。这对于操作系统在运行时动态地优化代码或选择最优路径非常重要。
    2. 检测处理器功能:CPUID 可以返回处理器支持的指令集、缓存层次结构、支持的扩展功能(如虚拟化技术)、性能计数器和其它处理器特性的信息。
    3. 配置程序:操作系统或应用程序可以根据 CPUID 指令的返回结果,来动态地选择实现适合当前处理器的最佳代码路径或调整系统设置
  3. 本人主要用于作为一个设备依据,采集这个信息做其他用途,比如结合其他信息验证设备的唯一性(此信息并不是唯一的,所以还需要结合设备的其他信息)

代码实现


基于C/C++的实现

#include <stdio.h>
#include <intrin.h>   //获取CPUID的接口在这个头文件中

/// <summary>
/// 调用WIN接口获取CPUID
/// </summary>
/// <param name="info"></param>
/// <param name="id"></param>
static void get_cpuid(unsigned int info[4], unsigned int id) {
    __cpuid((int*)info, id);
}

/// <summary>
/// 检查设备的CPUID和需要比较的ID是否一致
/// </summary>
/// <param name="i_cpuId"></param>
/// <returns></returns>
bool cmp_cpuid(char const* i_cpuId) {
    bool result = false;
    unsigned int info[4] = {0,};
    char cpu_id[20] = { 0 ,};
    //// Get CPU 制造商信息 比如AMD
    //get_cpuid(info, 0);
    //unsigned int vendor[4] = { info[1], info[3], info[2], 0 }; // EBX, EDX, ECX
    //printf("CPU Vendor: %s\n", (char*)vendor);

    // Get CPU ID
    get_cpuid(info, 1);
    snprintf(cpu_id, 19, "%08X%08X", info[3], info[0]); // EDX, EAX
    if ( memcmp(cpu_id, i_cpuId, strlen(cpu_id)) == 0) {
        result = true;
    }
   // printf("len : %d\tcpuid : %s\n",strlen(cpu_id), cpu_id);
    return result;
}

基于C#的代码实现

using System;
using System.Management;
public void GetCpuInfos()
{
    ManagementClass mc = new ManagementClass("win32_processor");
    ManagementObjectCollection moc = mc.GetInstances();

    foreach (ManagementObject mo in moc)
    {
    	string cpuId = mo.Properties["processorID"].Value.ToString();
    	Console.WriteLine("CPUID :" + cpuId);
    }
}

基于Python的代码实现

///待补充

需要源代码请私信我获取(基于V2022的C++版本)

标签:info,Windows,cpu,获取,int,处理器,CPUID,id
From: https://www.cnblogs.com/peng1028/p/18253019

相关文章

  • 安装、配置和使用AdGuard Home来实现家庭网络的广告和隐私保护;进一步深入学习和掌握Ad
    AdGuardHome是一个功能强大的网络广告拦截和隐私保护工具,它的底层原理涉及到多个方面的技术和工作原理。以下是关于AdGuardHome底层原理的概要:DNS拦截与过滤:AdGuardHome通过拦截DNS查询请求并返回虚假的响应来实现广告和恶意网站的过滤。它会拦截客户端设备发送的......
  • 获取服务器基本信息脚本
    #!/bin/bash#系统名称;s_type=$(uname-o|awk'{print"|"$0}')#系统位数;32/64os_bit=$(uname-m|awk'{print"|"$0}')#内核发型版本kernal_version=$(uname-r|awk'{print"|"$0}')#系统版本信息sys_inf......
  • 自动更新功能windows和安卓(待完善)
    import'package:flutter/material.dart';//import'package:auto_updater/auto_updater.dart';voidmain()async{/*WidgetsFlutterBinding.ensureInitialized();StringfeedURL='https://weimaoer.github.io/updata.xml';a......
  • 处理问题:windows server 2016由于没有远程桌面授权服务器可以提供许可证,远程会话被中
      windowsserver可以多用户同时登陆,默认最大远程登录数量为2,如果有更多人需要同时远程登录,则需要安装远程桌面授权服务,第一次安装后,免费期为120天,超过则无法正常远程登录。解决办法如下:Windowsserver2016服务器远程桌面登录时出现错误提示:“由于没有远程桌面授权服务器......
  • Windows11系统Win32_EncryptableVolume.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个Win32_EncryptableVolume.dll文件(挑选合适......
  • Windows11系统webview2_integration.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个webview2_integration.dll文件(挑选合适的版......
  • Windows11系统webengine4.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个webengine4.dll文件(挑选合适的版本文件)把......
  • Windows11系统webview2standalone.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个webview2standalone.dll文件(挑选合适的版本......
  • 【Mysql】Windows下安装和配置Mysql
    一、下载官网下载Mysql:https://dev.mysql.com/downloads/mysql/百度网盘链接mysql-8.0.31:https://pan.baidu.com/s/1CiW7oL8fR05NPZT55_9DUQ?pwd=0724提取码:0724二、解压下载完成后我们得到的是一个压缩包,将其解压,我们就可以得到MySQL8.0.31的软件本体了(就是一个文件夹),我......
  • 在Vue 3中,要获取指定目录内的所有组件
     vue3获取指定目录内组件在Vue3中,要获取指定目录内的所有组件,可以使用Vue的编程式导入。这通常在自动化场景,如通过编程的方式导入一个目录下所有的Vue组件时使用。以下是一个简单的例子,展示如何在Vue3中编程式地导入一个目录下的所有组件://假设componentsDir为组件......