Delphi和WMI网络

Dru*_*mir 4 delphi wmi networking

对于我正在编写的应用程序,我需要更改网络适配器的一些参数,包括启用/禁用DHCP.为此,我使用此源代码中的"SetIpConfig"命令:

SetIPConfig

如果网络适配器已连接,它可以很好地工作并完成我需要的工作.问题是如果拔掉LAN电缆,我无法启用DHCP,而我可以正确更改其他参数,如IP或网关.当我尝试启用dhcp,而网络适配器断开连接时,我得到ole错误:

94找不到路径,文件或对象

我认为无论如何它都应该工作,即使网卡断开连接,因为我可以正确地执行此操作,进入网卡/ IP属性窗口(使用XP).

这里完全描述了我的问题:

http://www.neowin.net/forum/topic/515984-c-enabling-dhcp-on-nic-through-wmi/

正如那家伙所做的那样,我试图直接更改注册码以激活DHCP但是,即使在网络适配器属性上,值也正确更改,NIC表现得没有任何改变,就像更改没有"应用"到它.

这里有另一个话题:

www.winvistatips.com/wmi-config-fails-ethernet-cable-unplugged-t181330.html

他们建议禁用dhcpsense将密钥放入名为DisableDHCPMediaSense(DWORD)的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters并将其设置为1.

好的..现在工作,我没有尝试完整的dhcp功能,只是我已经看到它可以启用nic不插电但是,正如有人写的,我不认为禁用dhcp感觉是一个好主意.这意味着dhcp客户端无法知道连接状态,所以我认为如果连接断开,它可能会在更新租约时遇到麻烦,然后再次建立.

操作系统:XP SP3语言:DelphiXE

怎么了 ?非常感谢.

RRU*_*RUZ 5

当设备断开连接时,这似乎是WMI限制(或错误?)(前一段时间我在其他论坛中也看到了类似的报告).作为解决方法,只针对这种特殊情况(当设备未连接时),您可以尝试使用未记录的DhcpNotifyConfigChange功能或直接使用Windows注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{Adapter-guid_goes_here} 
Run Code Online (Sandbox Code Playgroud)