C++ 为什么删除适配器时DeleteIPAddress失败';什么是默认IP?
我正在尝试编写一个程序来切换所选适配器的IP on命令 为此,我使用getAdapterInfo()函数获取适配器的索引及其IP上下文,然后使用该函数删除当前IP(通过DeleteIPAddress(context)) 之后,将通过AddIPAddress()插入新IP 问题是,当尝试删除“默认”IP(AddIPAddress()未设置的IP)时,调用DeleteIPAddress函数失败,并且在删除旧IP之前调用AddIPAddress只会使适配器同时拥有两个不同的IP DeleteIPAddress功能失败,出现错误31(连接到系统的设备不工作)C++ 为什么删除适配器时DeleteIPAddress失败';什么是默认IP?,c++,ip,ip-address,windows-xp-embedded,iphelper,C++,Ip,Ip Address,Windows Xp Embedded,Iphelper,我正在尝试编写一个程序来切换所选适配器的IP on命令 为此,我使用getAdapterInfo()函数获取适配器的索引及其IP上下文,然后使用该函数删除当前IP(通过DeleteIPAddress(context)) 之后,将通过AddIPAddress()插入新IP 问题是,当尝试删除“默认”IP(AddIPAddress()未设置的IP)时,调用DeleteIPAddress函数失败,并且在删除旧IP之前调用AddIPAddress只会使适配器同时拥有两个不同的IP DeleteIPAdd
是否有其他方法可以成功更改适配器上的IP地址?DeleteIPAddress在不从AddIPAddress获取上下文的情况下是否实际可用?他们说,DeleteIPAddress删除AddIPAddress之前添加的地址:-) 我做了一些研究的兴趣和 有未记录的
SetAdapterIPAddress
功能
DWORD SetAdapterIpAddress( char *pszAdapGUID,
DWORD dwDHCP,
DWORD dwIP,
DWORD dwMask,
DWORD dwGateway );
它可能有效,也可能无效:-)
还有WMI接口。有关Win32网络适配器配置的信息,请参见。
windows注册表中有NIC IP地址的记录
我认为,复杂性存在于Windows中许多“内部”配置代理(DHCP,其他..),它们都是操作系统的内部部分,当它们操作ip地址时,其他失控的操作可能会中断它们的工作。也有可能在注册表中分配一个静态ip地址,它也不应该被破坏。然后你真的有了你之前添加的DeleteIPAddress。。。我认为,它是为您自己的动态配置代理设计的
若您对其他代理的工作不满意,您应该关闭它们(而不是操纵ip地址失控)。。。或者通过特定的API控制它们。。。或设置静态IP