[英]Why does DeleteIPAddress fails when deleting the adapter's default IP?
我正在嘗試編寫一個程序,該命令將在命令中切換所選適配器的IP。
為此,我正在使用GetAdaptersInfo()函數來獲取適配器的索引及其IP上下文,然后使用它來刪除當前IP(通過DeleteIPAddress(context))。
之后,將通過AddIPAddress()插入新IP。
問題是,嘗試刪除“默認” IP(未由AddIPAddress()設置的IP)並在刪除舊IP之前調用AddIPAddress時,對DeleteIPAddress函數的調用失敗,只是使適配器具有兩個不同的同時IP。
DeleteIPAddress函數失敗,並顯示錯誤31(連接到系統的設備無法運行)。
有沒有其他方法可以成功更改適配器上的IP地址? 在沒有從AddIPAddress獲取上下文的情況下,DeleteIPAddress實際上可用嗎?
他們說,DeleteIPAddress刪除以前由AddIPAddress添加的地址:-)我已經按興趣進行了一些研究,並且...
有未記錄的SetAdapterIPAddress
函數。
DWORD SetAdapterIpAddress( char *pszAdapGUID,
DWORD dwDHCP,
DWORD dwIP,
DWORD dwMask,
DWORD dwGateway );
它可能行不通:-)還有WMI界面。 請參見Win32_NetworkAdapterConfiguration
類。 Windows注冊表中有一個記錄,記錄了NIC IP地址...
我認為,復雜性在於Windows中存在許多“內部”配置代理(DHCP等),它們都是操作系統的內部組成部分,然后當他們操作ip地址時,其他無法控制的操作可能會中斷他們的工作。 也有可能在注冊表中分配一個靜態IP地址,並且也不應該破壞它。 然后,您確實有了先前添加的DeleteIPAddress ...我認為,它用於您自己的動態配置代理...
如果您對其他代理的工作不滿意,則應將其關閉(而不是通過控制來控制IP地址)...或通過某些特定的API控制它們...或設置靜態IP ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.