2015-04-16 7 views
10

Ich habe einen Windows-Dienst programmiert, der einen anderen Dienst über das Netzwerk anruft.Dienst in Windows 7-Betriebssystem, das die Hosts-Datei nicht als lokalen Dienst verwendet

Die IP des anderen Dienstes ist in der hosts-Datei definiert.

Der Windows-Dienst wird als lokales System ausgeführt.

Auf Windows Server 2008 funktioniert das gut. Die IP aus der Host-Datei wird verwendet.

Unter Windows 7 wird die IP-Adresse der Hosts-Datei nicht verwendet. Stattdessen verwendet es normales DNS.

Wenn ich einen normalen Benutzer anstelle des lokalen Systems verwende, ist das Verhalten korrekt. Dasselbe wie unter Windows Server 2008. Die Host-Datei wird verwendet.

Ich kann zuverlässig zwischen lokalem System und einem normalen Benutzer für den gleichen Dienst binäre wechseln, ohne die Hosts-Datei zu berühren, der Fehler ist reproduzierbar. Es geht also nicht darum irgendwo etwas zwischenzuspeichern oder eine falsche hosts Datei zu haben.

Gibt es irgendetwas in Windows 7, das ich verpasst habe? Warum sollte ein Dienst, der als lokales System ausgeführt wird nicht die Hosts-Datei verwenden?

+0

Jede Chance, es ist ein Fehler in der Hosts-Datei unter Windows 7, so dass der Eintrag einfach ignoriert wird (wie eine Steuer char, dass zeigt an wie normaler Platz)? – UserControl

+0

Nun, wenn ich den Benutzer zu einem tatsächlichen Benutzer anstelle von LocalSystem wechseln, funktionieren die gleichen Hosts-Datei und die gleiche Dienst-Binärdatei gut, also denke ich, dass es korrekt sein muss. – nvoigt

+0

Haben Sie die Berechtigungen für die hosts-Datei überprüft, um sicherzustellen, dass sie korrekt sind? – Xefan

Antwort

9

Der Grund, warum es als normaler Benutzer funktioniert, könnte folgende sein: Sie könnten eine doppelte hosts Datei in %LOCALAPPDATA%\VirtualStore haben, die ein Umleitungsordner für Programme ist, die als Nicht-Administrator ausgeführt werden und versuchen, an Systemspeicherorte zu schreiben. Wenn dies der Fall ist, dann sehen Sie tatsächlich falsche hosts Datei, wenn Sie denken, dass Sie das System bearbeiten!

Der andere Grund könnte falsche Berechtigungen auf Datei festgelegt sein. Bitte versuchen Sie Punkt 5 von https://serverfault.com/a/452269

+0

Das war unser Problem, als wir anfingen, mit Windows 7 zu arbeiten; Unsere HOSTS-Einträge wurden umgeleitet und traten nicht in Kraft. Verwenden Sie als Administrator mit Editor ausführen und öffnen Sie die Datei direkt, oder schauen Sie im VirtualStore nach, ob Sie eine Kopie der Datei dort gespeichert haben. – Skerkles

4
  • Erste schließen andere runnings Anwendungen und haben einen Blick auf Ihre Systemprotokolle
  • Sie alles als System ausgeführt werden kann wie explorer.exe oder cmd zu debuggen.exe mit dem Folowing Befehl PSTools verwenden Sie können dann Ihre Gastgeber Browser und überprüfen Sie es

    psexec -i -s cmd.exe

    psexec -i -s ping your.host

  • mehr Eintrag für den gleichen Host auf Hosts Vermeiden Datei

  • Auch wenn Sie sprach darüber Ich poste einige Debug-Befehle

    ipconfig /flushdns

    nbtstat -R (Reset netbios)

  • Sie können DNS überprüfen Cache

    ipconfig /displaydns | more

  • Windows festgelegt die Hosts-Datei Standort mit diesem Registrierungsschlüssel

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

  • prüfen Proxy-Konfiguration könnte es Bypass Gastgeber

  • Check "etc" Verzeichnisberechtigung und Datei "hosts" Erlaubnis