2016-07-07 17 views
1

ich aus einem C# Windows-Dienst das Benutzerverzeichnis erhalten müssen bekommen ...
... wie C: \ Benutzer \ myusername \
Im Idealfall würde Ich mag den Roaming-Pfad zu haben ...
... wie C: \ Benutzer \ myusername \ AppData \ Roaming \
Wenn ich folgendes in einem Konsolenprogramm verwende ich das richtige Benutzerverzeichnis bekam ...C# Service: Wie Benutzerprofil Ordnerpfad

System.Environment.GetEnvironmentVariable("USERPROFILE"); 

... aber wenn ich dieselbe Variable in einem Dienst verwende, bekomme ich ...
C: \ WINDOWS \ system32 \ config \ sys temprofile
Wie kann ich den Benutzerordner und vielleicht sogar den Speicherort des Roaming-Ordners von einem Dienst abrufen?
Vielen Dank im Voraus.

+0

Windows-Dienst nicht wie das läuft angemeldeter Benutzer Wenn Sie etwas mehr über das, was Sie versuchen, erklären, könnte es zu einer Antwort helfen. – Chamindu

Antwort

0

Ein Dienst meldet sich nicht wie ein Benutzer an, es sei denn, der Dienst ist für die Verwendung eines bestimmten Benutzerprofils konfiguriert. Es wird also nicht auf "Benutzerordner" zeigen.

+0

Das macht Sinn. Gibt es eine Variable, die enthält, wo die Benutzerprofilordner aufbewahrt werden? Dann werde ich nur durch sie aufzählen. –

+0

Registrierungsschlüssel unter diesem Knoten. HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ AktuelleVersion \ ProfileList. Suchen Sie nach "ProfilesDirectory" -Eintrag –

+0

Gibt es eine Möglichkeit zu sagen, welcher Benutzer derzeit angemeldet ist? –

0

Zuerst sollten Sie Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)

Environment.SpecialFolder.ApplicationData für Roaming-Profile verwenden ist.

alle Werte Special Aufzählung hier finden: https://msdn.microsoft.com/en-us/library/system.environment.specialfolder(v=vs.110).aspx

Wie andere bereits erwähnt haben, wird der Dienst unter dem Konto Localsystem/LocalService-/Networkservice, je nach Konfiguration ausgeführt: https://msdn.microsoft.com/en-us/library/windows/desktop/ms686005(v=vs.85).aspx

+0

Ich bekomme C: \ WINDOWS \ system32 \ config \ systemprofile \ AppData \ Roaming von Environment.SpecialFolder.ApplicationData was nicht was ist Ich suche. Ich denke, ich werde in der Registrierung nach Codenoir suchen müssen –