Служба в операционной системе Windows 7 не использует файл hosts в качестве локальной службы

Я запрограммировал службу Windows, которая вызывает другую службу по сети.

Другой IP-адрес службы определяется в файле hosts.

Служба Windows работает как локальная система.

В Windows Server 2008 это работает отлично. Используется IP-адрес из файла hosts.

В Windows 7 IP-адрес из файла hosts не используется. Вместо этого он использует обычный DNS.

Если я использую обычный пользователь вместо локальной системы, поведение будет правильным. То же самое, что и в Windows Server 2008. Используется файл хоста.

Я могу надежно переключаться между локальной системой и обычным пользователем для одного и того же служебного двоичного кода, не касаясь файла hosts, ошибка воспроизводится. Так что это не о кэшировании чего-либо в любом месте или наличии неправильного файла hosts.

Есть ли что-нибудь в Windows 7, я пропустил? Почему служба, работающая как локальная система, не использует файл hosts?

Ответ 1

Причина, по которой он работает как обычный пользователь, может быть такой: у вас может быть дублированный файл hosts в %LOCALAPPDATA%\VirtualStore, который является папкой перенаправления для программ, запущенных как не-админ и пытающихся записать в системные местоположения. Если это так, то вы действительно видите неправильный файл hosts, когда думаете, что редактируете систему один!

Другой причиной могут быть неправильные разрешения, установленные для файла. Пожалуйста, попробуйте пункт 5 из https://serverfault.com/a/452269

Ответ 2

  • Сначала закройте другие приложения для запуска и посмотрите на свои системные журналы
  • Вы можете запускать что-либо как систему для отладки, например explorer.exe или cmd.exe с помощью следующей команды, используя PSTools, вы могли бы затем просмотреть ваши хосты и проверить его

    psexec -i -s cmd.exe

    psexec -i -s ping your.host

  • Избегайте нескольких записей для одного и того же хоста в файле hosts

  • Даже если вы говорили об этом, я отправляю некоторые команды отладки

    ipconfig /flushdns

    nbtstat -R (reset netbios)

  • Вы можете проверить кеш DNS

    ipconfig /displaydns | more

  • Windows устанавливает расположение файла hosts с помощью этого раздела реестра

    \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath

  • Проверьте конфигурацию прокси-сервера, чтобы обойти узлы

  • Проверьте права на каталоги "etc" и разрешение файла "hosts"