Windows 7 操作系统中的服务不使用主机文件作为本地服务

Service in Windows 7 operating system not using the hosts file as local service

我编写了一个 Windows 服务,它通过网络调用另一个服务。

其他服务的 IP 在 hosts 文件中定义。

Windows 服务是 运行 作为本地系统。

在 Windows Server 2008 上工作正常。使用主机文件中的 IP。

在 Windows 7 上,hosts 文件中的 IP 使用。相反,它使用普通的 DNS。

如果我使用普通用户而不是本地系统,行为是正确的。与 Windows Server 2008 相同。使用主机文件。

我可以在本地系统和普通用户之间可靠地切换相同的服务二进制文件,而无需触及主机文件,错误是可重现的。因此,这与在任何地方缓存任何内容或拥有错误的主机文件无关。

Windows 7 有什么我错过的吗?为什么服务 运行 作为本地系统 而不是 使用主机文件?

它作为普通用户工作的原因可能是:您可能在 %LOCALAPPDATA%\VirtualStore 中有一个重复的 hosts 文件,它是程序 运行 作为非管理员并尝试写入系统位置。如果是这种情况,那么当您认为自己编辑系统文件时,您实际上看到了错误的 hosts 文件!

另一个原因可能是文件权限设置错误。请尝试 https://serverfault.com/a/452269

中的第 5 点
  • 首先关闭其他 运行nings 应用程序并查看您的系统日志
  • 您可以 运行 任何系统来调试,例如 explorer.exe 或 cmd.exe 使用以下命令使用 PSTools 然后你可以浏览你的主机并检查它

    psexec -i -s cmd.exe

    psexec -i -s ping your.host

  • 避免在 hosts 文件中多次输入同一主机

  • 即使你说了我 post 一些调试命令

    ipconfig /flushdns

    nbtstat -R(重置 netbios)

  • 您可以检查 DNS 缓存

    ipconfig /displaydns | more

  • Windows 使用此注册表项设置主机文件位置

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

  • 检查代理配置它可以绕过主机

  • 检查"etc"目录权限和"hosts"文件权限