Ausführbare von einem Windows-Dienst gestartet das lokale Systemkonto verwenden, können nicht auf Netzwerkfreigaben zugreifen

StackOverflow https://stackoverflow.com/questions/249928

Frage

Ich habe eine ausführbare Datei, die von einem Windows-Dienst gestartet wird, wird dieses Programm auf einer Kunden-Maschine ausgeführt werden und muß an eine Remote-Freigabe verbinden, um eine bestimmte Aufgabe auszuführen. Dieser Anteil wird vom Kunden über eine UI angegeben, so dass wir nicht wissen, dies im Voraus das heißt es nicht „hart codierte“, oder der Anteil im Voraus abgebildet sein kann.

Bisher benötigt wir die Kunden auf ihre Maschine anzumelden und die ausführbare Datei auf Log-on laufen, aber wir wollten schon immer unserem Programm zu ermöglichen, innerhalb eines Dienstes und nicht benötigt eine Log-in, in erster Linie, um es einfacher zu laufen für die Kunden und verhindern den versehentlichen Log-outs unsere Software heruntergefahren. So auch das bedeutet, dass wir nicht wissen, was lokale Benutzerkonten auf einem Kunden-Computer existieren, so müssen wir den Dienst starten das lokale Systemkonto verwenden.

Wir haben jetzt, wie oben erwähnt, ein Wrapper-Service die ausführbare Datei zu starten und verschiedene Aufgaben ausführen. Dies scheint in den meisten Fällen gut zu funktionieren und greift auf das zugrunde liegende Netzwerk in Ordnung -. Unsere Software Zweck vor allem der Erfassung Pakete beinhaltet etc

Wenn jedoch die Software versucht, auf einen Windows-Freigabe (UNC-Namen) verbinden es kann keine Verbindung herstellen. Während, wenn die ausführbare Datei gestartet wurde manuell verbindet es in Ordnung.

Die Vorschläge, die ich im Allgemeinen diese Art von Fragen gesehen habe aufzulösen scheinen alle ein Benutzerkonto als Systemkonto verwenden, kann nicht sagen, Netzwerkfreigaben zugreifen, aber in unserem Fall ist dies nicht möglich. Gibt es eine andere Art und Weise wir diese bekommen könnte zu arbeiten?

Edit: Ich vergaß zu erwähnen, dass diese Anwendung könnte (und am häufigsten wird) laufen auf Win2K nicht XP, und ich glaube, ich bin zu Recht sagen, dass die Local Network-Konto, bevor XP nicht verfügbar ist

War es hilfreich?

Lösung

Wenn Sie Ihren Windows-Dienst ändern können, so dass sie unter dem Netzwerkdienstkonto ausgeführt wird, dann die ausführbare Datei in der Lage, Netzwerkfreigaben zugreifen (dies ist ein Grund, warum das Netzwerkdienstkonto erstellt wurde).

Das lokale System und lokale Dienstkonten haben keine Netzwerk-Anmeldeinformationen, und können somit nicht im Netzwerk authentifiziert werden. Das ist von Entwurf.

Edit:. IIRC wurde das Netzwerkdienstkonto in Server eingeführt 2003 und zu einem des XP Service Packs

Wenn Sie nicht auf dem Netzwerkdienstkonto zur Verfügung steht verlassen können, dann könnten Sie ein eigenes Domain-Konto betrachten Erstellen, Speicher die Anmeldeinformationen des Kontos irgendwo, sie aus Ihrem Dienst liest, dann loging in und Identitätswechsel, dass Benutzer vor dem Zugriff auf das Netzwerk Teilen. Alternativ direkt der Windows-Dienst als dediziertes Konto laufen konnte, in diesem Fall würde es die „Anmeldung als Dienst“ Privileg erforderlich.

Andere Tipps

Wenn Sie einen Dienst haben, läuft unter NT AUTHORITY \ LOCAL (das ist der Name des Dienstkontos ist), scheint es, als der Domainname \ Computername $ (beachten Sie das $ -Zeichen) Konto mit dem Rest des Netzes. Das heißt, scheint es, als das Konto des COMPUTER in Active Directory. gewähren Sie einfach Ihre Datei und Freigabe-Berechtigungen zu Domainname \ Computername $ und Sie sollten gut sein.

Warum können Sie nicht ein anderes Konto verwenden? Es ist ein Netzwerk-Dienstkonto in Windows integriert, die speziell für Dienste, die den Netzwerkzugriff benötigen.

Wie auch immer, sehr vorsichtig sein, wenn ein Dienst eine exe starten zu müssen.

Wenn der Schreibzugriff auf den Ordner mit der exe nicht deaktiviert ist, kann ein Benutzer, dass die exe mit ersetzen (zum Beispiel) cmd.exe. Das nächste Mal, wenn der Dienst versucht, Ihre exe, voilà zu starten: Ein Kommando-Shell mit Systemrechten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top