
我有一個作為 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'
。
。