2010-09-01 19 views
11

Ich habe einen Windows-Dienst auf meinem lokalen Computer ausgeführt. Es ist so konfiguriert, dass es unter NT AUTHORITY \ NETWORK SERVICE ausgeführt wird. Das Programm greift auf ein freigegebenes Netzwerklaufwerk auf einem Computer im selben Subnetz zu. In diesem freigegebenen Verzeichnis ist Jeder auf Vollzugriff festgelegt.Windows-Dienst kann nicht auf Netzwerkfreigabe zugreifen

Ich bekomme False auf File.Exists, aber die Datei existiert. Ich bin mir sicher, dass dies ein Genehmigungsproblem ist. Vergesse ich etwas? Hinweis: Der Computer mit dem freigegebenen Laufwerk befindet sich nicht in einer Domäne.

+7

wir tun nicht nuthin über dem stinkin Server hier. versuchen Serverfehler. –

Antwort

15

Lösung wurde hier gefunden: https://serverfault.com/questions/177139/windows-service-cant-access-network-share

Die Tatsache, dass die Maschine mit dem gemeinsamen genutzten Laufwerk nicht in einer Domäne befindet, wo Ihr Hauptproblem ist. Damit dies funktioniert, müssen Sie den Windows-Dienst so konfigurieren, dass er als bestimmter Benutzer ausgeführt wird. Anschließend müssen Sie einen identischen Benutzer auf dem Remote-System mit demselben Kennwort erstellen. Es könnte dann funktionieren.

Das Problem rührt von der Tatsache her, dass Sie sich mit einem Konto, das auf diesem Computer vorhanden ist, anmelden müssen, um sich bei einer Maschine anzumelden, die sich nicht in einer Domäne befindet. Das Computerkonto für etwas anderes wird definitiv nicht auf diesem lokalen Rechner existieren. einen identischen Benutzers mit identischem Passwort Durch das Erstellen, dass Sie die Anmeldung erhalten können, arbeiten.“

-sysadmin1138

I identische Konten auf beiden Rechnern erstellt und das Dienstkonto konnte die gemeinsam genutzt werden Die Server auf der gleichen Domain zu haben ist eine bessere Lösung, also arbeite ich darauf hin, aber das wird in der Zwischenzeit funktionieren. "

+0

Was passiert, wenn ich den Remote-Server nicht anfassen kann? Gibt es eine Alternative? –

2

Das Festlegen der Freigabeberechtigungen ist nicht ausreichend. Setzen Sie auch die NTFS-Berechtigungen entsprechend, dann wird es funktionieren. Jeder Vollzugriff auf die Freigabe bedeutet, dass jeder durch das Netzwerk zum Stamm der Freigabe gelangen kann, aber von da an werden NTFS-Rechte verwendet, um zu bestimmen, was erlaubt ist und was nicht.

+0

Wo kann ich die NTFS-Berechtigungen ändern? Ich habe die Vollzugriffskontrolle auf Jeder unter Freigabeberechtigungen und der Registerkarte Sicherheit festgelegt –

+0

Die NTFS-Berechtigungen befinden sich in der Registerkarte Sicherheit. Achten Sie auf die verweigerten Berechtigungen in "Erweitert". Sie überschreiben alle anderen Berechtigungen für einen bestimmten Benutzer. Wenn ein Benutzer Mitglied mehrerer Gruppen ist, gelten auch die restriktivsten Rechte. ACL-Berechtigungen sind wirklich eine schwierige Sache. Ich bin mir auch ziemlich sicher, dass da etwas nicht stimmt. Überprüfen Sie auch, auf welcher Ebene die Berechtigungen gelten ("Dieser Ordner, Unterordner und Dateien"). Sie sind auch nur auf der Registerkarte Erweitert sichtbar. Ich hoffe es hilft. Mit den Berechtigungen auf der Registerkarte können Sie sehen, welche Berechtigungen ein Benutzer (eventuell) besitzt. – jdehaan

5

Brian T war korrekt. Aber ich würde gerne etwas hinzufügen. Wir hatten Dieses Problem trat auf, obwohl der Dienst auf demselben DOMÄNE \ Benutzer ausgeführt wurde. \ n Unser Dienst versuchte, eine Datei in einem freigegebenen Ordner/Laufwerk zu schreiben, und es wurde in dem C konfiguriert onfig.xml wie folgt: I:/Pfad/zu/der/Datei/zu/schreiben.

Aber als wir die Konfiguration änderten, um die IP-Adresse des Netzwerks anstelle des Laufwerkbuchstabens zu verwenden, haben wir das Problem behoben. Allerdings änderte sich die Syntax ein wenig:

\\ xxx.xxx.xx.xx \ Pfad \ der \ Ordner \ to \ \

Hoffnung schreiben, das hilft jemand, der noch nicht das Problem gelöst haben

+0

diese Lösung hat für mich funktioniert –

Verwandte Themen