Problem: Process.Start unter System Konto
-
Hallo,
hab da mal einn Problem:
Mein Diesnt, der vom System unterm System Konto gestartet wird, startet einen Prozess, der somit ebenfalls unter dem System Konto läuft.
Dieser Prozess kann dann leider nicht auf Netzwerk Resourcen zugreifen (Netzwerk Laufwerk, Drucker). Startet ich den Prozess manuell unter einem Benutzer Konto, funktioniert der Zugriff auf die Netzresourcen.Wenn ich versuche, der ProcessStartInfo Benutzernamen und Kennwort mitzugeben, funktioniert das auch nur, wenn der Prozess unter dem Benutzer Konto gestartet wird.
Kann ich das Problem irgendwie mit den Security Klassen lösen?
Danke für eure zahlreichen Antworten.
WorstCase
-
Hallo,
mir ist nicht ganz klar, was du eigentlich bezweckst. Die grobe zu lösende Aufgabenstellung wäre hier hilfreich gewesen.
Ich kombiniere mal ein wenig...
Wenn ich das richtig verstehe, willst du den Prozess mit den Account des Angemeldeten Benutzers starten. Dann kämpfst gegen die Security von Windows. Das ist eigentlich nicht richtig. Ein Dienst sollte steht's unabhängig vom angemeldeten Benutzer sein. Stell dir vor, auf dem Rechner sind mehrere Leute angemeldet. Der Dienst existiert dann aber nur einmal. Das geht nicht. Für das delegieren von Accounts sind Dienste einfach nicht gebaut.
Man kann zwar einen Account angeben, das ist aber statisch.
Wenn es das ist, was du möchtest, dann setze doch einfach dein Benutzername und Passwort in die Dienst-Konfiguration.
Oder besser:
Lege ein Service-Account in deiner Domain an. Gib diesen Account nur die Rechte, die der Dienst für die notwendigen Arbeiten benötigt. Dann gib den Service-Account in der Dienst-Konfiguration angeben kannst.Allgemein:
Das setzen von Account-Passwörtern in Programmen ist generell nicht so eine gute Idee. Zum einen könnte ich, wenn du das Passwort nicht verschlüsselst ablegst, auslesen, zum anderen musst du den Dienst neu erstellen, wenn sich der Account ändert. In vielen Firmen ist es Plicht, sein Passwort jede Woche oder 2 Wochen zu ändern. Das wäre in deinen Fall ziemlich lustig.
Stichwort "Netzwerk". Jeder der sich an dein Rechner anmeldet hat auf einmal, wenn auch nur auf diesen Dienst begrenzt, Netzwerkzugriff auf für ihn nicht zugängliche Netzwerke. Ok, wenn der Dienst in sich abgeschlossen ist, ist das nicht weiter tragisch (mal abgesehen von der dadurch entstandenen Angriffsfläche fürs Netzwerk). Wenn du aber dem Dienst ein Interface gesponsert hast, mit dem du zum Beispiel von Anwendungen über Remoting oder simple Socket-Verbindungen kommunizieren kannst. Dann hast du ein Sicherheitsproblem. Der Anwender kann dann tatsächlich unabhängig von seiner Netzwerkberechtigung auf die Daten eines anderen Netzwerkes zugreifen. Du umgehst somit die Security-Einstellungen.
Wenn du soetwas vor hast, dann rate ich dir von deiner Herangehensweise strickt ab. Dann käme für dich Enterprise Services oder WSE in Frage.
Wenn du mehr Infos möchtest, müsstest du uns mehr Infos geben.
Wir müssten die Augabenstellung zumindest grob kennen.
-
danke für die Infos.
So, wie du es beschreibst, hatte ich es nicht vor. Das Windows Sicherheitssystem will ich natürlich nicht aushebeln. Dann könnte ich ja auch die Boot.ini entsprechend konfigurieren.
Der Benutzer, dessen Konto ich verwenden wollte, ist natürlich auf dem System bekannt und hat auch die entsprechenden Rechte.Komisch ist halt nur, dass es klappt: Wenn User1 angemeldet ist, kann ich den Prozess mit den Konto Daten von User2 starten, aber leider nicht wenn dieser Prozess von einem Dienst gestartet wird.
Es ist halt etwas komplizierter geworden seit SP2. Werde mich mal mehr mit DotNet Security beschäftigen (strong name, CAS, usw.).
WorstCase