VC6.0下WMI编程需要先安装Platform SDK
2011年05月22日
最近,做一个小软件,需要设置一个网卡对应多个IP。此前,已经参考vcbase上的文章(这篇文章确实很经典,网上很多转载)封装过一个类(原理是修改注册表中和IP相关的部分,最后调用dhcpcsvc.dll中的一个未公开函数DhcpNotifyConfigChange实现不重启电脑让设置的IP生效)。实践结果显示:这个方案仅仅适用于一个网卡配置一个IP。如果是一个网卡配置多个IP呢,只有一个IP能立即生效,其他IP不会生效。要想配置的多个IP生效,需要先禁用"本地网络连接"然后再启用。
无奈之下,在网上狂搜,后来看到也有其他人遇到和我一样的问题。本来想是否能通过C++来实现"先禁用本地网络连接再启用",但是搜索不到具体的实例代码(自己的Windows编程水平不高,又比较懒,只有思路没有代码,我就无法实现了!)还好,有人推荐用WMI来实现,而且有具体的示例代码。于是,我把代码下载下来,编译。郁闷的事儿来了,编译中出现了下面的错误: fatal error C1083: Cannot open include file: 'Wbemidl.h': No such file or directory 我又在网上搜索一通,才知道是我的VC6.0缺少SDK开发库。那我该安装哪个SDK库呢?最后找到了几篇参考文章。
下面是相关参考(非常感谢写下这些总结的同学们): (1)《Microsoft Platform SDK For VC6.0》从中可以知道VC6.0该用哪个版本的SDK"最新的Windows?? Server 2003 SP1 Platform SDK 已不再支持Visual C++ 6.0,支持VC6的最近的Platform SDK版本是Microsoft Platform SDK February 2003"。同时博主分享了一个可以下载SDK的FTP站点。 遗憾的,我之前居然以为支持VC++6.0的SDK是这个版本:Windows?? Server 2003 SP1 Platform SDK,下载并安装这个版本后,编译时报错: LINK : fatal error LNK1104: cannot open file "wbemuuid.lib" 于是,继续在网上搜索,才发现是我的SDK版本错啦!哎,鄙视一下自己,看东西不够仔细⊙