
Tengo un programa que se ejecuta como servicio de Windows 7. En el programa, la variable de entorno HOMEPATH se utiliza para establecer la ubicación de un archivo. Normalmente, cuando el programa simplemente se ejecuta en una línea de comando, HOMEPATH se asignará al directorio de inicio del usuario que inició sesión. Sin embargo, este no es el caso de un servicio de Windows.
Entonces, cuando un programa se ejecuta como un servicio y usa la variable de entorno HOMEPATH, ¿a dónde se asigna?
Respuesta1
Los servicios normalmente se ejecutan bajo una de tres cuentas de servicio Local Service
Local System
y Network Service
. Para todo lo cual la variable HOMEPATH esnulo.
Investigar
Para su escenario específico, puede hacer que el servicio escriba una entrada de registro de eventos e imprima lo que almacena en la variable HOMEPATH. En C# podrías usar:
protected override void OnStart(string[] args)
{
EventLog.WriteEntry("The HomePath for this service is '" + Environment.GetEnvironmentVariable("HOMEPATH") + "'", EventLogEntryType.Information);
}
Soluciones posibles
Puede configurar qué cuenta utiliza un servicio (su cuenta de usuario, por ejemplo), en la ventana de propiedades de los servicios o en la configuración de instalación del servicio. Cuando probé con mi cuenta de usuario, se mostró la entrada del registro de eventos The HomePath for this service is '\Users\Admin-PC'
.
.