CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx

上传人:b****3 文档编号:6969140 上传时间:2023-05-10 格式:DOCX 页数:6 大小:17.15KB
下载 相关 举报
CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx_第1页
第1页 / 共6页
CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx_第2页
第2页 / 共6页
CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx_第3页
第3页 / 共6页
CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx_第4页
第4页 / 共6页
CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx_第5页
第5页 / 共6页
CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx

《CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx》由会员分享,可在线阅读,更多相关《CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx(6页珍藏版)》请在冰点文库上搜索。

CC通过WMI和系统API函数获取获取系统硬件配置信息转.docx

CC通过WMI和系统API函数获取获取系统硬件配置信息转

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

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

当然第一想法肯定是利用Windows提供的系统标准API函数来完成所需的功能,当然这也应该是当前最理想最有效率的选择了。

但是如果你对API编程不是很熟练的话...那就相当蛋疼了!

你知道用API可以做到但是不知道用哪个API,好啊,可以查MSDN。

问题是你连API名字都不知道...当然,如果你们公司允许你们上国内局域网的话那就好办多了,因为有无数强大的网友会帮你找到答案。

使用API编程的另一个问题是如果你仍旧对API不熟悉的话调用起来相当困难、很不顺手。

还有一种方案就是--->“强大”的WMI,.net平台的程序员可能对这个比较熟悉,WMI即windows管理规范。

通过它可以访问、配置、管理和监视几乎所有的Windows资源。

当然对于程序员而言在WMI体系结构中我们最需要关心的就是WMI提供的程序和接口。

WMI提供程序在WMI和托管资源之间扮演着中间方的角色。

提供程序代表使用者应用程序和脚本从WMI托管资源请求信息,并发送指令到WMI托管资源。

下面是我们利用WMI编程经常要用到的WMI内置提供程序清单,以供编程参考。

1.ActiveDirectory提供程序

链接库文件:

dsprov.dll

命名空间:

root\directory\ldap

作用:

将ActiveDirectory对象映射到WMI。

2.事件日志提供程序

链接库文件:

ntevt.dll

命名空间:

root\cimv2

作用:

管理Windows事件日志,例如,读取、备份、清除、复制、删除、监视、重命名、压缩、解压缩和更改事件日志设置。

3.注册表提供程序

链接库文件:

stdprov.dll

命名空间:

root\default

作用:

读取、写入、枚举、监视、创建、删除注册表项和值。

4.Win32提供程序

链接库文件:

cimwin32.dll

命名空间:

root\cimv2

作用:

提供关于计算机、磁盘、外围设备、文件、文件夹、文件系统、网络组件、操作系统、打印机、进程、安全性、服务、共享、SAM用户及组,以及更多资源的信息。

5.Windows安装程序提供程序

链接库文件:

msiprov.dll

命名空间:

root\cimv2

作用:

提供对已安装软件信息的访问。

以上可以看出WMI中的类被分组到不同的命名空间中,所以我们在调用相应的程序库时要注意引入对应的命名空间~~~我们今天用到的库就是cimwin32.dll库(第4个)。

好,废话到此为止,还有不懂的自己下去慢慢研究:

现在看代码...

一、基于API方式的实现代码,简单的对部分API函数的封装:

1、GetSysInfo.h文件

pragmaonce#include<afxtempl.h>classGetSysInfo

{

public:

GetSysInfo(void);

~GetSysInfo(void);public:

/********获取操作系统版本,Servicepack版本、系统类型************/

voidGetOSVersion(CString&strOSVersion,CString&strServiceVersion);

BOOLIsWow64();//判断是否为64位操作系统/***********获取网卡数目和名字***********/

intGetInterFaceCount();

voidGetInterFaceName(CString&InterfaceName,intpNum);/***获取物理内存和虚拟内存大小***/

voidGetMemoryInfo(CString&dwTotalPhys,CString&dwTotalVirtual);/****获取CPU名称、内核数目、主频*******/

voidGetCpuInfo(CString&chProcessorName,CString&chProcessorType,DWORD&dwNum,DWORD&dwMaxClockSpeed);/****获取硬盘信息****/

voidGetDiskInfo(DWORD&dwNum,CStringchDriveInfo[]);/****获取显卡信息*****/

voidGetDisplayCardInfo(DWORD&dwNum,CStringchCardName[]);

private:

CStringListInterfaces;//保存所有网卡的名字

CList<DWORD,DWORD&>Bandwidths;//各网卡的带宽

CList<DWORD,DWORD&>TotalTraffics;//各网卡的总流量

};2.GetSysInfo.cpp文件

#include"StdAfx.h"

#include"GetSysInfo.h"

#include"float.h"

#include"winperf.h"

GetSysInfo:

:

GetSysInfo(void)

{

}

GetSysInfo:

:

~GetSysInfo(void)

{

}

voidGetSysInfo:

:

GetOSVersion(CString&strOSVersion,CString&strServiceVersion)

{

CStringstr;

OSVERSIONINFOEXosvi;

SYSTEM_INFOsi;

BOOLbOsVersionInfoEx;

ZeroMemory(&si,sizeof(SYSTEM_INFO));

ZeroMemory(&osvi,sizeof(OSVERSIONINFOEX));

osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);

if(!

(bOsVersionInfoEx=GetVersionEx((OSVERSIONINFO*)&osvi)))

{

osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);

GetVersionEx((OSVERSIONINFO*)&osvi);

}

GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),

"GetNativeSystemInfo");

GetSystemInfo(&si);

switch(osvi.dwPlatformId)

{

caseVER_PLATFORM_WIN32_NT:

if(osvi.dwMajorVersion==6&&osvi.dwMinorVersion==0)

{

if(osvi.wProductType==VER_NT_WORKSTATION)

{

str.Format(_T("WindowsVista"));

}

else

{

str.Format(_T("WindowsServer\"Longhorn\""));

}

}

if(osvi.dwMajorVersion==5&&osvi.dwMinorVersion==2)

{

if(GetSystemMetrics(SM_SERVERR2))

{

str.Format(_T("MicrosoftWindowsServer2003\"R2\""));

}

elseif(osvi.wProductType==VER_NT_WORKSTATION&&

si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)

{

str.Format(_T("MicrosoftWindowsXPProfessionalx64Edition"));

}

else

{

str.Format(_T("MicrosoftWindowsServer2003,"));

}

}

if(osvi.dwMajorVersion==5&&osvi.dwMinorVersion==1)

{

str.Format(_T("MicrosoftWindowsXP"));

}

if(osvi.dwMajorVersion==5&&osvi.dwMinorVersion==0)

str.Format(_T("MicrosoftWindows2000"));

if(osvi.dwMajorVersion<=4)

{

str.Format(_T("MicrosoftWindowsNT"));

}

//TestforspecificproductonWindowsNT4.0SP6andlater.

if(bOsVersionInfoEx)

{

//将ServicePack版本保存

strServiceVersion.Format(_T("ServicePack%d"),osvi.wServicePackMajor);

//Testfortheworkstationtype.

if(osvi.wProductType==VER_NT_WORKSTATION&&

si.wProcessorArchitecture!

=PROCESSOR_ARCHITECTURE_AMD64)

{

if(osvi.dwMajorVersion==4)

str=str+_T("Workstation4.0");

elseif(osvi.wSuiteMask&VER_SUITE_PERSONAL)

str=str+_T("HomeEdition");

elsestr=str+_T("Professional");

}

//Testfortheservertype.

elseif(osvi.wProductType==VER_NT_SERVER||

osvi.wProductType==VER_NT_DOMAIN_CONTROLLER)

{

if(osvi.dwMajorVersion==5&&osvi.dwMinorVersion==2)

{

if(si.wProcessorArchitecture==

PROCESSOR_ARCHITECTURE_IA64)

{

if(osvi.wSuiteMask&VER_SUITE_D

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2