Ao executar um programa como um serviço do Windows 7, para onde a variável HOMEPATH mapeia?

1

Eu tenho um programa que está sendo executado como um serviço do Windows 7. No programa, a variável de ambiente HOMEPATH está sendo usada para definir o local de um arquivo. Normalmente, quando o programa é simplesmente executado em uma linha de comando, o HOMEPATH será mapeado para o diretório inicial do usuário logado. No entanto, esse não é o caso de um serviço do Windows.

Então, quando um programa é executado como um serviço, e você usa a variável de ambiente HOMEPATH, para onde isso mapeia?

    
por Neeko 24.10.2014 / 14:14

1 resposta

1

Os serviços geralmente são executados em uma das três contas de serviço, Local Service Local System e Network Service . Para todos os quais a variável HOMEPATH é null .

Para investigar

Para o seu cenário específico, você pode fazer o serviço gravar uma entrada no registro de eventos e imprimir o que ela armazena na variável HOMEPATH. Em C # você poderia usar:

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

Soluções possíveis

Você pode definir qual conta um serviço usa (sua conta de usuário, por exemplo), na janela de propriedades de serviços ou na configuração de instalação do serviço. Quando testei com minha conta de usuário, a entrada do log de eventos foi exibida The HomePath for this service is '\Users\Admin-PC' .

    
por 21.03.2015 / 01:00