Согласно этому Статья в базе знаний когда вы запускаете команду "netsh int ip reset", все, что она делает, это сбрасывает содержимое двух разделов реестра:
SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
SYSTEM\CurrentControlSet\Services\DHCP\Parameters\
но в моей тестовой системе он, кажется, делает больше.
На машине с Windows Server 2012 R2 x64 после того, как мое приложение делает что-то не так, если я пытаюсь настроить статический IP-адрес для сетевого интерфейса, я получаю мгновенный BSOD.
Чтобы решить эту проблему, мне нужно запустить "netsh int ip reset", а затем я могу установить статический IP-адрес. Теперь я пытаюсь понять, как "netsh int ip reset" решает проблему.
Я знаю, что это не содержимое этих двух разделов реестра, потому что на своей виртуальной машине я сделал следующее:
Когда мое приложение пытается настроить сетевой интерфейс с IP-адресом, который уже использовался другим сетевым интерфейсом в прошлом, сначала оно должно удалить эту IP-конфигурацию для отсутствующего устройства, а затем оно может использовать этот IP.
Для этого он ищет в каждом реестре в SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Interfaces и видит, использовал ли какой-либо из интерфейсов тот IP-адрес, который я хочу использовать, сравнивая значение в свойстве «IPAddress» с тем, которое я хочу использовать. Если он находит совпадение, сначала он проверяет, активен ли этот интерфейс, а если нет, он удаляет значение в свойстве «IPAddress» и устанавливает для свойства «EnableDHCP» значение 1, после чего я могу использовать этот IP-адрес в своем интерфейсе. Это то, что мое приложение сделало неправильно. Когда этот интерфейс снова заработает, он установит IP-конфигурацию через DHCP, но он будет BSOD, если вы попытаетесь установить на нем статический IP-адрес. Правильный способ сделать это - установить для свойства «IPAddress» значение «0.0.0.0» и «EnableDHCP» на 1. Если вы оставите «IPAddress» пустым и установите для «EnableDHCP» значение 1, что-то пойдет не так в конфигурации TCPIP, что « netsh int ip reset "исправит .. но что именно он исправляет, я понятия не имею. Все, что я знаю, это то, что не в двух ключах реестра Статья в базе знаний упоминания.
Итак, что еще делает "netsh int ip reset", кроме сброса содержимого этих двух реестров, что решает проблему в моей тестовой системе?
В той же статье базы знаний упоминается, что запуск команды сохранит файл журнала resetlog.txt. Что в журнале написано?
Вы также можете запустить Process Monitor из SysInternals и заставить его отслеживать вашу команду netsh.
Я сделал это на своей рабочей станции Windows 8.1, отфильтровав вывод ProcMon по «имя процесса> содержит> netsh» и получил более 5000 результатов. Похоже, когда вы запускаете эту команду, происходит МНОГОЕ. Извините, но я не собираюсь разбирать вам весь этот вывод :)