Wohin wird die Variable HOMEPATH zugeordnet, wenn ein Programm als Windows 7-Dienst ausgeführt wird?

Wohin wird die Variable HOMEPATH zugeordnet, wenn ein Programm als Windows 7-Dienst ausgeführt wird?

Ich habe ein Programm, das als Windows 7-Dienst ausgeführt wird. Im Programm wird die Umgebungsvariable HOMEPATH verwendet, um den Speicherort einer Datei festzulegen. Wenn das Programm einfach über eine Befehlszeile ausgeführt wird, wird HOMEPATH normalerweise dem Home-Verzeichnis des angemeldeten Benutzers zugeordnet. Dies ist jedoch bei einem Windows-Dienst nicht der Fall.

Wenn also ein Programm als Dienst ausgeführt wird und Sie die Umgebungsvariable HOMEPATH verwenden, wohin wird diese dann zugeordnet?

Antwort1

Dienste werden normalerweise unter einem von drei Dienstkonten ausgeführt Local Service Local System. Network ServiceFür alle ist die Variable HOMEPATHNull.


Zu untersuchen


Für Ihr spezielles Szenario könnten Sie den Dienst einen Ereignisprotokolleintrag schreiben lassen und ausdrucken lassen, was er in der Variable HOMEPATH speichert. In C# könnten Sie Folgendes verwenden:

protected override void OnStart(string[] args)
{
    EventLog.WriteEntry("The HomePath for this service is '" + Environment.GetEnvironmentVariable("HOMEPATH") + "'", EventLogEntryType.Information);
}

Mögliche Lösungen


Sie können im Eigenschaftenfenster des Dienstes oder in der Installationskonfiguration des Dienstes festlegen, welches Konto ein Dienst verwendet (z. B. Ihr Benutzerkonto). Als ich es mit meinem Benutzerkonto getestet habe, wurde im Ereignisprotokolleintrag Folgendes angezeigt The HomePath for this service is '\Users\Admin-PC':
Bildbeschreibung hier eingeben. . Bildbeschreibung hier eingeben

verwandte Informationen