Служба в операционной системе 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"