3)使用WMI(Windows Management Instrumentation)中Win32_NetworkAdapterConfiguration类实现IP地址管理。
Windows Management Instrumentation (WMI) 是 Microsoft WBEM 的实现,通过企业网络为访问和共享管理信息主动建立的标准。WMI 符合 WBEM 标准,并为“公用信息模型 (CIM)”(它是描述存在于管理环境中的对象的数据模型)提供完整的支持。WMI 可以被 Microsoft 技术和工具使用,如可以与编程或脚本系统(如 Windows 脚本宿主)一起使用 WMI 来检索大部分计算机系统方面的详细配置信息(包括服务器应用程序),或者对系统的配置进行更改。
在WMI中Win32_NetworkAdapterConfiguration类实现了大多数的网络适配器的配置工作,可以通过EnableStatic方法设置IP地址和子网掩码;通过SetGateways方法设置网关;通过SetDNSServerSearchOrder方法设置DNS服务器地址。
由于WMI使用了CIM作为实现基础,因此在以上的类和方法均使用一种接口定义语MOF(Managed object Format/受管对象格式)来准确描述模型中的类和关联,以上的方法MOF描述如下:
uint32 EnableStatic(
[in] string IPAddress[],
[in] string SubnetMask[]
);
uint32 SetGateways(
[in] string DefaultIPGateway[],
[in] uint16 GatewayCostMetric[]
);
uint32 SetDNSServerSearchOrder(
[in] string DNSServerSearchOrder[]
);
以上三种方案均可以实现在Windows环境中不重新启动修改网络适配器参数,但是使用netsh命令行在C++程序中调用效率不高,而使用微软未公开得API实现可能会受到操作系统变更的影响,为了支持个不同版本的Windows本方案使用WMI作为本程序实现的基础。
2.程序开发
通过以上的分析,本程序主要需要实现的功能是在windows环境中根据给定的配置参数对指定的网络适配器进行配置,程序流图如下:

图1 程序流图
图1所示的程序流图中表明了程序开始首先等待用户的输入,即选择接入网络的物理地址,然后程序根据配置文件中的数据选择恰当的配置参数,这些参数被预先存放在Config.ini文件中,需要注意的是IP地址参数分为两种情况,一种是确定的IP地址,另一种是仅提供IP地址的前3部分,最后一部分为0,如192.168.1.0。因为在实际网络中不可能配置这样的IP地址,程序会自动判断参数,如果IP不确定那么会随机生成IP的最后一部分,然后程序尝试配置,如果发生IP地址冲突那么程序将对原IP进行自增一的操作后尝试IP设置,直到成功配置一个合法的IP地址。
|