VC6应用WMI获取系统信息
2011年05月02日
花费两天左右时间,总算可以在VC6下使用WMI技术了,现将遇到的问题及解决方法记录一下。
起因是为了获取系统的硬件信息,经查阅可以使用WMI技术来实现,于CodeProject网站上下载了vc6使用WMI的示例程序,结果发现编译不成功。
出错信息如下: fatal error C1083: Cannot open include file: 'wbemidl.h': No such file or directory 即"wbemidl.h"头文件未找到,于是乎跑到C:\下搜索该文件,发现有两处存在:
C:\Program Files\Microsoft SDKs\Windows\v5.0\Include\WbemIdl.h
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WbemIdl.h
让我惊异的发现存在"Microsoft SDKs"这样一个目录,通过目录中文件的时间信息判断,应该是安装VS2008时附带的。试图在VC6的Options -> Directories中添加头文件和Lib库的路径,但是仍然未能成功编译。
查找资料发现,普遍认为不能再VC6中使用VS2008中附带的SDK,微软对VC6支持的最新的SDK版本为"PlatformSDK_2003_February", 并有下载页面:http://www.microsoft.com/msdownload/platformsdk/sd kupdate/psdk-full.htm,然而此页面已经不能正常打开了,点击时只能转到微软的下载中心首页。
无奈之下在微软的下载中心查找PlatformSDK的下载信息,可以找到"Windows?? Server 2003 R2 Platform SDK"的下载,看到说明中提到了支持XP,便开始下载,但是没有看到说对VC6的支持。
400多M的文件,下载速度还不给力,期间继续在网上搜寻,神奇的在微软社区找到了一篇帖子,帖中有人给出了"PlatformSDK_2003_February"的下载地址,引用如下: Here are the direct links to the Febuary 2003 SDK (build 5.2.3790.0): http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1 .cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.2 .cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.3 .cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.4 .cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.5 .cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.6 .cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.7 .cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.8 .cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.9 .cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1 0.cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1 1.cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1 2.cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1 3.cab http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.b at http://download.microsoft.com/download/platformsdk /sdk/update/win98mexp/en-us/3790.0/FULL/Extract.exe You must download all files in the same directory. To extract the SDK on your HDD you must use the batch file. After extracting the SDK you can install it from your extraction directory. You can also burn it on a CD or DVD. 如获至宝,立即暂停了原有下载,开始下载这个版本。期间在网上看到有人使用VC6结合"Windows?? Server 2003 R2 Platform SDK"进行开发工作,但也是提出了一些疑问,不能确定可靠性,本人也就放弃了此项尝试。
经过若干时间,终于完成下载,按照下载地址框中附带的安装说明,完成解压缩操作。安装时图省时,仅安装了WMI SDK,当然安装程序自动安装了相关依赖文件。
安装完成后,在VC的Options -> Directories页面中添加相关搜索路径,再次进行编译,结果再次报错,报错信息如下: error C2065: 'CoInitializeSecurity' : undeclared identifier error C2065: 'EOAC_NONE' : undeclared identifier 这次应该不能是SDK的问题了,到SDK的Include目录安装路径"C:\Program Files\Microsoft SDK\include"中,搜索文本"CoInitializeSecurity",发现其定义在"OBJBASE.H"文件中,且使用一个预编译宏控制: #if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) 在StdAfx.h中所有引用头文件语句之上,添加了一行定义: #define _WIN32_DCOM Rebuild All,成功! 部分参考文章:
1、Getting Information from WMI in Visual C++ http://www.codeproject.com/KB/system/Using_WMI_in_ Visual_C__.aspx 2、Microsoft Platform SDK - February 2003,用VC6的不能不知道的事件 3、【收藏】通过 WMI 获取系统信息 4、where download sdk server 2003 february edition ? http://social.msdn.microsoft.com/Forums/zh-CN/wind owssdk/thread/83205c43-ef46-447d-ae54-92bbeb543c38 btw: if this helps you, please let me know, thank you.
发表评论
-
Windows Installer的简单应用
2012-01-20 09:31 693Windows Installer的简单应 ... -
Windows下的高精度定时器实现及精确时刻获取
2012-01-20 09:31 1328Windows下的高精度定时器实现及精确时刻获取 2010年 ... -
在android 2.3 AVD 模拟器上安装 google market 安卓市场
2012-01-20 09:31 576在android 2.3 AVD 模拟器上安装 google ... -
在android 2.3 AVD 模拟器上安装 google market 安卓市场
2012-01-20 09:31 576在android 2.3 AVD 模拟器上安装 google ... -
载沣:“瑜伽王爷”的柔软身段(二)
2012-01-19 14:33 514载沣:“瑜伽王爷”的柔软身段(二) 2012年01月09日 ... -
论外格用舍
2012-01-19 14:33 586论外格用舍 2012年01月13日 二十二、论外格用舍 ... -
中国人的用餐礼仪~~~有空大家看看,蛮受用的哦
2012-01-19 14:33 598中国人的用餐礼仪~~~有空大家看看,蛮受用的哦 2009年0 ... -
一代天骄成吉思汗的秘葬
2012-01-19 14:33 621一代天骄成吉思汗的秘 ... -
《论语》解读之3-19《使下以礼事上以忠》
2012-01-19 14:33 623《论语》解读之3-19《使下以礼事上以忠》 2011年12月 ... -
Flex动态创建类对象
2012-01-17 04:21 653Flex动态创建类对象 2010年08月07日 自Act ... -
107条Javascript的常用语句
2012-01-17 04:21 469107条Javascript的常用语句 2010年12月31 ... -
学习JavaScript---对象
2012-01-17 04:21 514学习JavaScript---对象 2010年10月01日 ... -
JavaScript内置对象
2012-01-17 04:20 462JavaScript内置对象 2010年11月01日 ... -
JS学习---ECMAScript对象
2012-01-17 04:20 587JS学习---ECMAScript对象 2010年11月25 ... -
女性最为吸引人的品质
2012-01-16 03:10 438女性最为吸引人的品质 2009年10月11日 ... -
现代女性怎样说话才可爱
2012-01-16 03:10 715现代女性怎样说话才可 ... -
流利口语脱口而出第九课
2012-01-16 03:10 558流利口语脱口而出第九课 2009年10月13日 第九课 ... -
女性恋爱时在意的11件事情
2012-01-16 03:10 528女性恋爱时在意的11件事情 2009年07月31日 如果 ... -
女性最为吸引人的品质
2012-01-16 03:10 430女性最为吸引人的品质 ...
相关推荐
在VC6环境下,开发人员经常需要获取系统的各种硬件和软件信息,例如主机信息、CPU信息、内存信息、硬盘信息以及动态链接库(DLL)的调用情况。这些信息对于系统监控、性能分析以及软件优化至关重要。下面将详细介绍...
本文将深入探讨如何利用C++通过WMI获取操作系统的补丁(hotfix)信息,同时介绍虚拟接口技术在MFC DLL中的应用。 首先,WMI是微软提出的一种基于WBEM(Web-Based Enterprise Management)标准的组件,它为管理系统...
这个压缩包文件“vc获取windows系统的硬件信息.zip”包含了一系列与该主题相关的源代码和工程文件,让我们来深入探讨如何使用C++语言在Windows平台上获取硬件信息。 首先,`HardwareInfo.cpp`和`HardwareInfoDlg....
**WMI(Windows Management Instrumentation)是微软提供的一种在Windows操作系统上进行系统管理的标准接口,它允许应用程序通过标准的查询语言(WQL)获取和控制系统资源的信息。本教程将聚焦于如何使用C++在VC2005...
- IIEEG 全球游戏开发者第一中文门户站 VC系统编程 用WMI获取磁盘硬件信息(硬盘ID).mht:这是一个MHT文件,可能包含了关于如何使用WMI获取硬盘信息的教程或示例代码。 - ReadMe.txt、说明.txt:这些是文本文件,可能...
本压缩包"VC 枚举(获取)系统硬件信息.rar"包含了实现这一功能的源码,主要关注声卡、显卡、CPU、内存、键盘、总线设备、硬盘和主板等硬件组件的信息获取。 首先,我们要讨论的是CPU信息的获取。在Windows系统中,...
在VC++编程环境中,获取系统硬件信息是一项常见的任务,这对于软件优化、硬件监控或系统诊断至关重要。本篇文章将深入探讨如何使用VC++来获取CPU型号和内存等关键硬件信息。 首先,我们需要了解Windows API(应用...
3. **利用WMI获取硬件信息** - WMI是Windows系统内置的管理服务,提供丰富的硬件和系统信息。通过`IWbemLocator::ConnectServer`和`IWbemServices::ExecQuery`接口,可以查询到各种硬件信息,例如`Win32_Processor`...
通过以上步骤,你可以编写一个简单的C++程序,从WMI获取系统信息,如处理器信息、内存使用情况、网络配置、磁盘状态等。在实际应用中,可以根据需要调整WQL查询语句,获取特定的信息。例如,使用`Win32_...
这里的“vc获取windows系统信息mfc”主要涉及两个关键知识点:CPU ID(Central Processing Unit Identification)和硬盘ID。这两个标识符是系统硬件的重要特征,用于识别计算机的处理器和存储设备。 首先,让我们...
WMI是基于Microsoft的分布式管理任务组(DMTF)的Common Information Model (CIM)标准,它提供了一种统一的方式来获取和操作系统的管理信息。WMI的核心是WMI服务,它通过COM接口暴露给开发者,使得C++等语言能够方便...
2. **WMI查询**: Windows Management Instrumentation (WMI)提供了一种更高级的方式来获取系统信息,包括BIOS信息。可以使用`IWbemServices`接口和WQL(WMI查询语言)来查询`Win32_BIOS`类,获取详细的BIOS属性。 ...
在Windows系统中,可以使用`WMI`(Windows Management Instrumentation)服务来获取硬盘信息,包括其序列号。VC++中可以使用`IWbemLocator`和`IWbemServices`接口来访问WMI,查询`Win32_DiskDrive`类获取硬盘ID。 3...
在实际应用中,这样的工具可以帮助开发者或系统管理员快速获取计算机的硬件信息,方便进行硬件追踪、软件授权或故障诊断。使用VC6.0编译这些源代码时,确保配置正确,并链接相应的库文件(如.lib文件),以确保程序...
在VC++环境中,获取CPU使用率是一项常见的任务,特别是在系统监控和性能分析中。通过编程方式获取CPU使用率,可以帮助开发者了解程序运行时对系统资源的占用情况,从而优化程序性能。以下是一些关于如何使用VC++...
这个压缩包“VC .NET通过Windows获取BIOS信息.rar”包含了一个使用Visual C#.NET编写的简单示例代码,用于演示如何实现这一功能。在本文中,我们将深入探讨如何使用C#.NET来获取BIOS信息以及相关的知识点。 首先,...
在C++编程中,获取硬件信息是一项常见的任务,特别是在系统监控、硬件诊断或者性能优化的场景下。本项目聚焦于封装获取硬件信息的代码,并强调了设计模式的应用以提高代码的可扩展性和可调试性。这里我们将深入探讨...
在使用Visual C++(VC)通过Windows Management Instrumentation (WMI)接口访问远程计算机资源时,可能会遇到返回结果始终为零的情况,即`rHresult`一直等于0,这通常意味着操作未能获取到期望的结果或出现了某些...
WMI是Windows操作系统提供的一种标准接口,它允许应用程序访问和管理系统的配置信息,包括硬件、软件和服务状态等。 在这个场景中,"VC WMI 类可以查看共享文件夹的绝对路径"意味着我们可以通过VC++编写代码,利用...
WMI是微软提供的一种系统管理框架,它允许应用程序通过标准接口访问和操作Windows操作系统及应用程序提供的各种管理信息。 WMI的核心概念是WMI提供了一个统一的接口,使得开发者可以方便地获取和操作系统级别的信息...