В прошлом с C ++ я мог подключиться к функции gethostbyname WSOCK32.DLL и перенаправить DNS-запросы. Для этого я использовал библиотеку Microsoft Detours.
Что касается C #, я нашел это: http://easyhook.codeplex.com/ возможно, это поможет вам. По сути, вы можете подключиться к функции gethostbyname
windows и выполнить свой собственный код или вернуть другой результат (другой IP).
Другое возможное решение - временно (и программно) отредактировать файл hosts, когда приложение запускается и заканчивается. Из вашего собственного кода.
РЕДАКТИРОВАТЬ: Я нашел свой старый код C ++, может быть, он даст вам подсказку, что делать.
struct hostent FAR * WSAAPI MyGetHostByName(IN const char FAR * name)
{
// Call the regular function
struct hostent* ret = GetHostByNameFunction(name);
// Check if it's the hostname you want to reroute
if ( strcmp(host, (char*)name) == 0 )
{
// Edit the IP returned by the regular gethostbyname
ret->h_addr_list[0] = hostIP;
ret->h_length = 15;
}
// Return the result
return ret;
}
EDIT2: найдена другая ссылка с более новым выпуском easyhooks