原创 2016年05月14日 01:50:22

标签:

c++ /

WMI /

CPU

官网找到一个例子,根据例子修改下可以获取很多信息

[cpp]

#define _WIN32_DCOM

#include

using namespace std;

#include

#include

#pragma comment(lib, "wbemuuid.lib")

int main(int argc, char **argv)

{

HRESULT hres;

// Step 1: --------------------------------------------------

// Initialize COM. ------------------------------------------

hres =  CoInitializeEx(0, COINIT_MULTITHREADED);

if (FAILED(hres))

{

cout <

<

return 1;                  // Program has failed.

}

// Step 2: --------------------------------------------------

// Set general COM security levels --------------------------

hres =  CoInitializeSecurity(

NULL,

-1,                          // COM authentication

NULL,                        // Authentication services

NULL,                        // Reserved

RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication

RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation

NULL,                        // Authentication info

EOAC_NONE,                   // Additional capabilities

NULL                         // Reserved

);

if (FAILED(hres))

{

cout <

<

CoUninitialize();

return 1;                    // Program has failed.

}

// Step 3: ---------------------------------------------------

// Obtain the initial locator to WMI -------------------------

IWbemLocator *pLoc = NULL;

hres = CoCreateInstance(

CLSID_WbemLocator,

0,

CLSCTX_INPROC_SERVER,

IID_IWbemLocator, (LPVOID *) &pLoc);

if (FAILED(hres))

{

cout <

<

<

CoUninitialize();

return 1;                 // Program has failed.

}

// Step 4: -----------------------------------------------------

// Connect to WMI through the IWbemLocator::ConnectServer method

IWbemServices *pSvc = NULL;

// Connect to the root\cimv2 namespace with

// the current user and obtain pointer pSvc

// to make IWbemServices calls.

hres = pLoc->ConnectServer(

_bstr_t(L"ROOT\\CIMV2"), // Object path of WMI namespace

NULL,                    // User name. NULL = current user

NULL,                    // User password. NULL = current

0,                       // Locale. NULL indicates current

NULL,                    // Security flags.

0,                       // Authority (for example, Kerberos)

0,                       // Context object

&pSvc                    // pointer to IWbemServices proxy

);

if (FAILED(hres))

{

cout <

<

pLoc->Release();

CoUninitialize();

return 1;                // Program has failed.

}

cout <

// Step 5: --------------------------------------------------

// Set security levels on the proxy -------------------------

hres = CoSetProxyBlanket(

pSvc,                        // Indicates the proxy to set

RPC_C_AUTHN_WINNT,           // RPC_C_AUTHN_xxx

RPC_C_AUTHZ_NONE,            // RPC_C_AUTHZ_xxx

NULL,                        // Server principal name

RPC_C_AUTHN_LEVEL_CALL,      // RPC_C_AUTHN_LEVEL_xxx

RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx

NULL,                        // client identity

EOAC_NONE                    // proxy capabilities

);

if (FAILED(hres))

{

cout <

<

pSvc->Release();

pLoc->Release();

CoUninitialize();

return 1;               // Program has failed.

}

// Step 6: --------------------------------------------------

// Use the IWbemServices pointer to make requests of WMI ----

// For example, get the name of the operating system

IEnumWbemClassObject* pEnumerator = NULL;

hres = pSvc->ExecQuery(

bstr_t("WQL"),

bstr_t("SELECT * FROM Win32_OperatingSystem"),

WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,

NULL,

&pEnumerator);

if (FAILED(hres))

{

cout <

<

<

pSvc->Release();

pLoc->Release();

CoUninitialize();

return 1;               // Program has failed.

}

// Step 7: -------------------------------------------------

// Get the data from the query in step 6 -------------------

IWbemClassObject *pclsObj = NULL;

ULONG uReturn = 0;

while (pEnumerator)

{

HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,

&pclsObj, &uReturn);

if(0 == uReturn)

{

break;

}

VARIANT vtProp;

// Get the value of the Name property

hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);

wcout <

VariantClear(&vtProp);

pclsObj->Release();

}

// Cleanup

// ========

pSvc->Release();

pLoc->Release();

pEnumerator->Release();

CoUninitialize();

return 0;   // Program successfully completed.

}

下面列出了常用信息的类:

Win32_Processor                        // CPU 处理器

Win32_PhysicalMemory                   // 物理内存

Win32_Keyboard                         // 键盘

Win32_PointingDevice                   // 点输入设备,如鼠标

Win32_DiskDrive                        // 硬盘驱动器

Win32_CDROMDrive                       // 光盘驱动器

Win32_BaseBoard                        // 主板

Win32_BIOS                             // BIOS 芯片

Win32_ParallelPort                     // 并口

Win32_SerialPort                       // 串口

Win32_SoundDevice                      // 多媒体设置

Win32_USBController                    // USB 控制器

Win32_NetworkAdapter                   // 网络适配器

Win32_NetworkAdapterConfiguration      // 网络适配器设置

Win32_Printer                          // 打印机

Win32_PrinterConfiguration             // 打印机设置

Win32_PrintJob                         // 打印机任务

Win32_TCPIPPrinterPort                 // 打印机端口

Win32_POTSModem                        // MODEM

Win32_POTSModemToSerialPort            // MODEM 端口

Win32_DesktopMonitor                   // 显示器

Win32_VideoController                  // 显卡细节。

Win32_VideoSettings                    // 显卡支持的显示模式。

Win32_TimeZone                         // 时区

Win32_SystemDriver                     // 驱动程序

Win32_DiskPartition                    // 磁盘分区

Win32_LogicalDisk                      // 逻辑磁盘

Win32_LogicalMemoryConfiguration       // 逻辑内存配置

Win32_PageFile                         // 系统页文件信息

Win32_PageFileSetting                  // 页文件设置

Win32_BootConfiguration                // 系统启动配置

Win32_OperatingSystem                  // 操作系统信息

Win32_StartupCommand                   // 系统自动启动程序

Win32_Service                          // 系统安装的服务

Win32_Group                            // 系统管理组

Win32_GroupUser                        // 系统组帐号

Win32_UserAccount                      // 用户帐号

Win32_Process                          // 系统进程

Win32_Thread                           // 系统线程

Win32_Share                            // 共享

Win32_NetworkClient                    // 已安装的网络客户端

Win32_NetworkProtocol                  // 已安装的网络协议

c++获得cpu厂商_【C++】WMI获取系统硬件信息(CPU/DISK/NetWork etc)相关推荐

  1. python获取系统硬件信息

    python获取系统硬件信息 github项目 https://github.com/giampaolo/psutil cpu,内存,etc.

  2. vbs获取计算机信息,vbs获取系统硬件信息小脚本

    工作需要,需要获取win服务器的硬件信息,提交给一api 接口,最后用vbs实现了功能,主要是用到了WMI 发包是调用curl.exe来实现的,代码如下: REM '获取IP地址' REM '判断DN ...

  3. C/C++通过WMI和系统API函数获取获取系统硬件(cpu,内存,显卡,网卡)配置信息

     转自:http://blog.csdn.net/ly402609921/article/details/7446943 前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU.内存.网络利 ...

  4. 基于WMI获取USB设备信息(即获取插即用设备信息)System.Management.ManagementObjectSearcher--ManagementObjectCollection

    基于WMI获取USB设备信息(即获取插即用设备信息)System.Management.ManagementObjectSearcher--ManagementObjectCollection 获取P ...

  5. 使用WMI编程获取主机硬件信息(CPU_ID,硬盘、主板、BIOS序列号,Mac地址)

    最近在公司实习,有个应用需要获取windows主机的一些硬件信息,在网上查阅了一些资料,大部分都是使用WMI编程来实现的. 因此小菜鸟自己也用WMI实现了一下,封装为函数GetUserInfo(),具 ...

  6. C/C++通过WMI和系统API函数获取获取系统硬件配置信息(转)

    前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU.内存.网络利用率等)和读取服务器的硬件配置参数的接口供项目组使用,就是一个类似于鲁大师之类的东东吧... 当然第一想法肯定是利用Windo ...

  7. C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号

    C#获取电脑硬件信息(CPU ID.主板ID.硬盘ID.BIOS编号 http://www.cnblogs.com/liufei88866/archive/2010/05/11/1732671.htm ...

  8. python 怎样调用硬件_如何使用python-hwinfo获取Linux硬件信息?

    导读 到目前为止,我们已经介绍了大部分获取 Linux 系统硬件信息和配置的工具,不过也有许多命令可用于相同目的.而且,一些工具会显示所有硬件组件的详细信息,或只显示特定设备的信息.在这个系列中, 今 ...

  9. python获取电脑硬件信息_Python实现的读取电脑硬件信息功能示例

    本文实例讲述了Python实现的读取电脑硬件信息功能.分享给大家供大家参考,具体如下: 上学那会,老师让我用java获取电脑硬件信息,CPU, 硬盘,MAC等,那个时候感觉搞了好久...... 今天, ...

最新文章

  1. 15.1 集合的迭代器
  2. vue单向数据流与双向绑定两者区别
  3. Vue中splice的使用:删除 替换 添加
  4. Implementation of WC in JAVA
  5. 循环语句until和while
  6. cad高程如何提取到cass软件_建筑CAD软件中如何设置墙厚标注? - 数码区
  7. hdu 1425 sort用堆排序做的
  8. Android之AIDL跨进程通讯
  9. arduino与风向传感器的接线_Arduino动手做(8)湿度传感器模块
  10. 一键搞定JavaEE应用, JRE + Tomcat + Mysql - JaveEE绿色运行环境JTM0.9版,将web变得像桌面应用一样简单.
  11. 鸿蒙系统简介ppt,鸿蒙来了!华为到底采用的是什么逆天的研发体系?500页PPT详解...
  12. hsqldb和mysql,Hsqldb简介和基本使用
  13. 极大似然法(ML)与最大期望法(EM)
  14. visionman-visionpro培训大纲
  15. 小学四年级计算机在线考试,小学信息技术四年级下册试题.DOC
  16. 浅谈数据与网络安全--对网络安全的基础知识了解
  17. 【总结】1334- JS中Object的keys是无序的吗
  18. MYSQL命令集大全
  19. 图像基础知识学习笔记
  20. CSP-J 2022复赛T2 解密--分析

热门文章

  1. con排插与单片机相连_教你如何使用Labview和单片机通信(串口).pdf
  2. java中输出5个数_编写一个程序,要求用户输入5个数字,并输出这些数字中最大的数字和这些数字中最小的数字...
  3. c access mysql数据库_基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)...
  4. 对话富通科技CEO赵伟:企业上云潮下 MSP正步入『黄金时代』...
  5. HTML CSS JS 特殊字符(转义)表
  6. 尼康日本拟裁员约一千人 涉及半导体制造业务
  7. nagios系列(一)centos6.5环境部署nagios服务端
  8. oracle浅析导致数据库性能问题的常见原因
  9. 努力只是因为想去做想做的事
  10. 用LVM在VMware中的Linux硬盘扩容