2010-12-29 16 views
2

Ich habe einen .NET-Dienst, der mit Dateien auf Remote-Computern interagieren muss. In der Konfiguration gibt der Benutzer die lokalen oder Remote-Pfade (UNC) an, auf die er zugreifen muss. Der Benutzer gibt außerdem einen Benutzernamen und ein Kennwort für einen Benutzer an, der auf diese Verzeichnisse zugreifen kann. Wenn der Dienst ausgeführt wird, verbindet er sich mit jedem dieser Pfade und verarbeitet die Dateien dort.Wie stelle ich eine Verbindung zu einem Remote-Verzeichnis ohne Identitätswechselberechtigungen her?

Ich habe versucht, Identitätswechsel, aber Kunden sind misstrauisch über die Gewährung dieser Berechtigung an einen Dienst (in der Regel als Localsystem ausgeführt).

Ich fand auch Code (http://www.aejw.com/), die die Remote-Verzeichnisse als zugeordnete Laufwerke zugeordnet und auf diese Weise zugegriffen. Dies führt jedoch dazu, dass einige Windows-Versionen über mehrere Verbindungen klagen.

Irgendwelche Vorschläge würden geschätzt.

Antwort

1

Sie haben zwei Möglichkeiten:

Entweder geben Sie Ihren Service-Zugriff auf die Dateien, die er unter seinem eigenen Konto muss .....

Oder erlauben den Identitätswechsel für Sie da, dies zu tun. Ich bin mir sicher, dass Sie verstehen können, warum es schlecht wäre, wenn ein entferntes System Aktionen an Dingen ausführen könnte, die es nicht erlaubt.

Ich bin sicher, Sie können auch verstehen, warum die Menschen nicht möchten, dass die Identitätsprivilegien Carte Blanche für alle Dienste geben.

Ich würde ernsthaft auf das Design Ihres Service und was es versucht zu tun haben. Wenn Sie den Dienst dorthin verschieben können, wo sich die Dateien befinden, oder den Code vom Clientcomputer ausführen, ist dies in diesem Szenario möglicherweise besser.

Ich versuche Ihre App zu verstehen, aber wenn Sie nur einen Benutzernamen und ein Passwort haben, ist es möglich, den Dienst als diesen Benutzer zu protokollieren?

+0

interagiert mit verschiedenen Systemen, es ist nicht möglich, diese Systeme immer auf der gleichen Maschine zu haben. Daher wird es notwendig, auf Dateien und Verzeichnisse auf den Remote-Boxen zuzugreifen. Ich möchte den Dienst als localSystem auf der Box, auf der es installiert ist, laufen lassen und trotzdem mit einem angegebenen Benutzernamen und Passwort auf die entfernten Freigaben zugreifen können. Ich habe nur gehofft, dass es eine Möglichkeit gibt, den Dienst als Benutzer ausführen zu lassen, aber als anderer Benutzer eine Verbindung zu Remote-Computern herzustellen. – Regan

0

Haben Sie diesen Blog angeschaut? http://blogs.msdn.com/b/joncole/archive/2009/09/21/impersonation-code-in-c.aspx

Mit dieser Klasse sollten Sie in der Lage sein, Code mit einem using() Block, der Identitätswechsel benötigt und wenn Sie den Block verlassen, zu Ihrem normalen Benutzer ausführen.

+0

Ich habe das gesehen. Um den Windows.Impersonate-Aufruf zu erstellen, müssen Sie jedoch über erhöhte Berechtigungen verfügen. Dies ist eine Sache, die ich vermeiden wollte. Wie ich bereits sagte, ist es das, was ich am wahrscheinlichsten tun werde. Dieser Link schließt die Dinge gut ein. – Regan

Verwandte Themen