簡體   English   中英

為什么刪除適配器的默認IP時DeleteIPAddress失敗?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM