C#: Service und Netzwerkzugriff

nightsky99

Grand Admiral Special
Mitglied seit
25.11.2001
Beiträge
2.043
Renomée
19
Standort
Wuppertal
Langsam verzweifle ich an einem bestimmten Problem:

Ich habe eine C# Service geschrieben, der auf einen Ordner im Netzwerk zugreift und dort eine txt Datei erzeugt - zumindest ist das der Plan.

Der Ordner im Netzwerk hängt in einer Domain, wobei ich den Username und das Passwort (+ Schreibzugriff natürlich) auch habe.

Habe nun auf dem lokalen Rechner (der nicht in der Domaine ist) einen lokalen Benutzer angelegt und innerhalb des C# Codes eine Impersonation benutzt. Ich übergebe also Domainname, User und Passwort.
Laut Debugging funktioniert diese auch wunderbar, trotzdem bekomme ich eine IOException (wrong username or bad password) sobald ich auf diesem Ordner die Datei erstellen möchte.

Wenn ich das ganze als Konsolenanwendung laufen lasse, funktioniert das wunderbar! Nur eben als Service nicht, egal ob ich den Service im User Mode / Local System / oder Network Service laufen lassen.

Weiß jemand von euch, wie man innerhalb eines Services mit Angabe des UNC Pfades
in diesen schreiben kann?

Wie gesagt, der Client mit dem Service ist nicht in der Domain, der Server schon!
 
Wäre es nicht am einfachsten, Du würdest den Service über die Diensteverwaltung so einrichten, dass er direkt mit dem richtigen Benutzer gestartet wird? Ansonsten kann das evtl. ein "Sicherheitsfeature" von Microsoft sein, dass das Impersonate im Dienst nicht richtig funktioniert?
 
Jein - die Lösung wäre machbar, wenn der Benutzer bei dem Dienst ein Teil der Domain ist.
Der Rechner ist aber nicht Teil der Domain!

Wenn mir jemand sagen würde, dass der Zugriff über einen Service gar nicht geht dann frage ich mich: warum kann ich es per Konsolenanwendung ausführen? Warum komme ich manuell per Windows Explorer und mit Angabe von "domain\user" und dem entsprechenden Passwort trotzdem drauf?
 
Nach weiteren hundert grauen Haaren scheine ich jetzt die Lösung gefunden zu haben: das Zauberwort heißt NetworkConnection!

Da der Zugriff per Windows Explorer mit Angabe der Domain\User plus dem Passwort funktioniert, habe ich das Ganze einfach nachgebildet und siehe da: it works!

Für mehr Informationen siehe hier: Drück mich!
 
Zurück
Oben Unten