當程式作為 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'
在此輸入影像描述在此輸入影像描述

相關內容