【问题标题】:Service in Windows 7 operating system not using the hosts file as local serviceWindows 7 操作系统中的服务未使用 hosts 文件作为本地服务
【发布时间】:2015-06-22 14:38:27
【问题描述】:

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

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

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

在 Windows Server 2008 上,这可以正常工作。使用 hosts 文件中的 IP。

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

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

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

我错过了 Windows 7 中的任何内容吗?为什么作为本地系统运行的服务使用 hosts 文件?

【问题讨论】:

  • Windows 7 上的 hosts 文件中是否存在错误,从而导致条目被忽略(如某些控制字符显示为常规空格)?
  • 好吧,如果我将用户切换到实际用户而不是 LocalSystem,相同的主机文件和相同的服务二进制文件可以正常工作,所以我想它一定是正确的。
  • 您是否检查了 hosts 文件的权限以确保它们正确无误?
  • 另外,机器是否有任何代理配置设置,使得一个用户被强制通过代理,而另一个用户没有?这可以通过组策略设置吗?我相信在 Internet 配置中设置代理设置时会忽略主机文件。
  • 这个问题不属于这里。规范的 Q+A is here.

标签: c# windows service hosts


【解决方案1】:

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

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

【讨论】:

  • 这是我们刚开始使用 Windows 7 时遇到的问题;我们的 HOSTS 条目被重定向并且没有生效。使用记事本以管理员身份运行并直接打开文件,或在 VirtualStore 中查看是否有该文件的副本存储在那里。
【解决方案2】:
  • 首先关闭其他正在运行的应用程序并查看您的系统日志
  • 您可以运行任何系统来调试,例如 explorer.exe 或 cmd.exe 使用PSTools 使用以下命令,您可以浏览您的主机并检查它

    psexec -i -s cmd.exe

    psexec -i -s ping your.host

  • 避免主机文件中同一主机的多个条目

  • 即使你谈到了它,我也会发布一些调试命令

    ipconfig /flushdns

    nbtstat -R(重置 netbios)

  • 你可以检查DNS缓存

    ipconfig /displaydns | more

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 2010-12-08
    • 2019-03-01
    • 1970-01-01
    相关资源
    最近更新 更多