2009-05-20 12 views
2

Ich habe einen Windows-Dienst ausgeführt, der Dateien aus einem überwachten Ordner (IO.FileSystemWacher) auf eine UNC-Freigabe in einem Netzwerk verschiebt.Windows Service Schreiben von Dateien auf Netzwerkfreigabe

Die Netzwerkfreigabe ist gesichert, aber die Freigabe hat die volle Kontrolle für den Dienstbenutzer; Trotzdem bekomme ich Probleme mit dem Dateipfad, der nicht gefunden wird.

Ich beabsichtige, den Service (aktuellen) Benutzer zu imitieren, aber bin mir nicht sicher, ob dies der richtige Weg ist, um darüber zu gehen.

Ideen?

+0

Wenn Sie den Pfad für die UNC-Freigabe nicht finden können, verwenden Sie möglicherweise einfach den falschen Pfad. Oder erhalten Sie eine Art von Zugriff verweigert Nachricht. –

+0

Es ist eine Zugriff verweigert Nachricht an das Domänenkonto, das ich bekomme. Das Domänenkonto, unter dem dieses ausgeführt wird, verfügt nicht über interaktive Anmelderechte, hat jedoch Zugriff auf bestimmte Freigaben über das Netzwerk sowie die Möglichkeit, Anwendungen und Dienste auf dem Hostcomputer auszuführen. – Hooloovoo

Antwort

2

überprüfen diese:

  • Ist der Service-Benutzer ein Domänenkonto? (lokales Konto wird nicht ausgeführt)
  • Hat der Dienstbenutzer NTFS-Schreibberechtigung für die UNC-Freigabe? (Freigabeberechtigung ist nicht genug, muss auch NTFS-Berechtigung haben)
+0

Sie könnten sehr gut auf etwas mit den NTFS- und Freigabeberechtigungen sein, die unterschiedlich sind. Sie sind, und es gibt jetzt einen Fall, der mit dem Infrastruktur-Team des Verkäufers aufgezogen wird. Danke – Hooloovoo

0

Versuchen Sie, das Computerkonto des Computers zu erteilen, auf dem der Dienstzugriff für die Freigabe ausgeführt wird. Alternativ können Sie den Dienst unter einem Domänenkonto ausführen (das offensichtlich Zugriff auf die Freigabe hat)

+0

Ich habe diese Privilegien nicht. Ich arbeite an einer Kundenseite und dies ist eine von nur 3 Maschinen, auf die ich direkt zugreifen kann. Ich kann auf unsere Webserver und unsere Datenbankinstanzen zugreifen, kann aber nicht auf andere Computer zugreifen. – Hooloovoo

2

Zuerst überprüfen Sie den Pfad ist, was Sie denken, dass es ist.

Um Berechtigungen zu überprüfen, können Sie Internet Explorer unter der Identität des Dienstkontos ausführen (runas ausführen) und dann den Pfad in das URL-Feld setzen, um zu überprüfen, ob das Dienstkonto auf den Pfad zugreifen kann.

+0

Ich kann auf das Laufwerk mit verwenden, wenn ich als Dienstkonto verbinden. Die Freigabe existiert, ich kann einfach nicht auf die Datei zugreifen. – Hooloovoo

0

Wie greifen Sie auf die Freigabe zu? Ist es nicht zufällig das angehängte Verzeichnis? Also sagen wir, dass \ server1 \ direcotry1 in z: \ directory1 oder so ähnlich gemountet ist. Wenn dies der Fall ist, müssen Sie sicherstellen, dass der Dienstbenutzer das bereitgestellte Verzeichnis "sieht". Oder gehen Sie mit Standard-UNC-Pfad (mit Doppel \).

+0

Der Zugriff auf die Freigabe erfolgt über einen Standard-UNC-Pfad. – Hooloovoo

0

Kann der FileSystemWatcher immer keine Verbindung zur UNC-Freigabe herstellen oder passiert er, nachdem der Watcher ausgeführt wurde?

Ich habe gesehen, dass der FileSystemWatcher, der auf einem anderen Computer ausgeführt wird, die Änderungsereignisse nicht mehr anzeigt, wenn Sie einen Computer neu starten, auf dem sich der überwachte Ordner befindet. Um dies zu umgehen, müssen Sie den Watcher neu starten. Ich glaube, dass Sie dazu die EnableRaisingEvents-Eigenschaft verwenden können.

+0

Tim, wenn Sie die Frage sorgfältig lesen, gibt er nicht an, dass ein FileWatcher auf eine UNC-Freigabe schaut. Worüber sprichst du, ist ein echtes Problem mit dem FileSystemWatcher. Haben Sie das gesehen: http://www.codeproject.com/KB/vb/AdvancedFileSystemWatcher.aspx – RichardOD

+0

Eines der ersten Dinge, die ich überprüft habe, als ich diese Entwicklung begann, war, dass ich eine UNC-Freigabe mit dem Dateiwächter sehen konnte. Die Dateien im überwachten Ordner werden verschoben, damit sie verarbeitet werden können. – Hooloovoo

Verwandte Themen