当作为 Windows 7 服务运行程序时,HOMEPATH 变量映射到哪里?

当作为 Windows 7 服务运行程序时,HOMEPATH 变量映射到哪里?

我有一个作为 Windows 7 服务运行的程序。在该程序中,HOMEPATH 环境变量用于设置文件的位置。通常,当程序在命令行中简单运行时,HOMEPATH 将映射到登录用户的主目录。但是,对于 Windows 服务来说情况并非如此。

因此,当程序作为服务运行时,并且您使用 HOMEPATH 环境变量,该变量映射到哪里?

答案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'...
在此处输入图片描述在此处输入图片描述

相关内容