Я пытаюсь изменить свой IP-адрес программно, через C ++.Может быть, это невозможно?Я нашел этот код ++:
bool MyMethod(char oldIPAddress[], char newIPAddress[], char newMaskAddress[])
{
DWORD dwRetVal = 0;
PIP_ADAPTER_INFO pAdapter = NULL;
ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));
if (pAdapterInfo == NULL)
{
return false;
}
if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW)
{
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen);
if (pAdapterInfo == NULL)
{
return false;
}
}
if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR)
{
pAdapter = pAdapterInfo;
while (pAdapter)
{
if (strcmp(oldIPAddress, pAdapter->IpAddressList.IpAddress.String) == 0)
{
IPAddr addr = inet_addr(newIPAddress);
IPMask mask = inet_addr(newMaskAddress);
ULONG context, instance;
if (DeleteIPAddress(pAdapter->IpAddressList.Context) != NO_ERROR
|| AddIPAddress(addr, mask, pAdapter->Index, &context, &instance) != NO_ERROR)
{
return false;
}
return true; // not return true
}
pAdapter = pAdapter->Next;
}
return false; // return false here
}
};
Программа компилируется и запускается без исключений, но MyMethod
всегда возвращает false
.если я использую cmd> ipconfig - IP-адрес все еще старый.Где моя ошибка?