如何通过 WinAPI 删除缺少的网络适配器的静态 IP 配置?

How to remove a static IP configuration for an absent network adapter through WinAPI?

提问人:Chris 提问时间:8/15/2013 最后编辑:Chris 更新时间:10/17/2016 访问量:3728

问:

当您使用以前在当前删除的网络适配器上使用的特定 IP 地址配置网络适配器时,您将失败。

如果通过 Windows TCP/IP 设置 GUI 执行此操作,系统将提醒您,并提供删除旧适配器 IP 配置的选项。

如何通过 WinAPI 实现相同的结果?

如果我使用 IP 帮助程序函数(GetAdaptersAddresses、GetAdaptersInfo),它们仅返回连接的适配器。

如果我通过执行查询来使用 Win32_NetworkAdapterConfiguration WMI 类

"Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = False"

我只得到断开连接的设备,这很完美,但“IPAddress”属性是空的。

那么,如何通过 WinAPI 使用以前由另一个网络适配器使用的 IP 地址来配置网络适配器,而该网络适配器现在不再存在?

WinAPI 网络编程 WMI MSDN IPHelper

评论

0赞 liorda 11/22/2013
你得到答案了吗?我有同样的问题......
1赞 Chris 12/8/2013
@liorda 我所做的是入侵注册表。我遍历 HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces,并查看是否有任何接口的字段 IPAddress 包含我要使用的 IP 地址。如果我找到一个,我会检查它是否在我的连接接口列表中。如果它在列表中,我会发出“IP 重复”错误。如果不是,我将该接口的 IPAddress 字段设置为默认值“0.0.0.0”,并将 EnableDHCP 设置为 1,以便如果它重新联机,它会通过 DHCP 获取 IP 配置。然后我就可以使用该 IP 地址了。
1赞 Brian White 4/25/2015
@Chris,这是一个合理的答案(即使不是你真正想要的答案)。这样发布并接受您自己的解决方案。

答: 暂无答案