找了很多资料,比如通过未公开函数:DhcpNotifyConfigChange,来修改ip。但是经过测试,在win10,该函数总是返回错误50,含义是未支持的请求。估计是因为操作系统不支持这种调用吧。
因此决定采用修改注册表,再重启网卡的方式来实现修改ip
BOOL CCameraCaptureDlg::SetIP(PIP_ADAPTER_INFO pInfo, int nIndex, LPCTSTR pIPAddress, LPCTSTR pNetMask, LPCTSTR pNetGate)
{
LPCTSTR lpszAdapterName = pInfo->AdapterName;
BOOL bResult = FALSE;
HKEY hKey;
CString strKeyName = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\";
//\SYSTEM\CurrentControlSet\Services\{BE42DB86-2E4E-4888-8880-2F058FA4C729}\Parameters\Tcpip
//如果我们通过手动操作修改dhcp的时候,对上面的注册表位置也是有影响的。但该注册项似乎对网上适配器的属性表的正确显示不起作用
strKeyName += lpszAdapterName;
DWORD dwRet = 0;
dwRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
strKeyName,
0,
KEY_WRITE,
&hKey);
if (dwRet != ERROR_SUCCESS)
{
char* pErr = FormatError(dwRet);
TRACE("RegOpenKeyEx