1

У меня есть программа, которая запускается как служба Windows 7. В программе переменная среды HOMEPATH используется для установки местоположения файла. Обычно, когда программа просто запускается из командной строки, HOMEPATH сопоставляется с домашним каталогом пользователя, вошедшего в систему. Однако это не относится к службе Windows.

Итак, когда программа запускается как служба, и вы используете переменную среды HOMEPATH, куда это отображается?

1 ответ1

1

Службы обычно запускаются под одной из трех учетных записей служб, Local Service Local System и Network Service . Для всех которых переменная HOMEPATH равна нулю .


Исследовать


Для вашего конкретного сценария вы можете попросить службу написать запись в журнале событий и распечатать то, что она хранит в переменной HOMEPATH. В C # вы можете использовать:

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

Возможные решения


Вы можете указать, какую учетную запись использует служба (например, ваша учетная запись пользователя), в окне свойств службы или в конфигурации установки службы. Когда я проверял свою учетную запись пользователя, в журнале событий отображалась запись The HomePath for this service is '\Users\Admin-PC' .
,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .