プログラムを Windows 7 サービスとして実行する場合、HOMEPATH 変数はどこにマップされますか?

プログラムを Windows 7 サービスとして実行する場合、HOMEPATH 変数はどこにマップされますか?

Windows 7 サービスとして実行されているプログラムがあります。プログラムでは、HOMEPATH 環境変数を使用してファイルの場所を設定しています。通常、プログラムをコマンド ラインで実行すると、HOMEPATH はログインしているユーザーのホーム ディレクトリにマップされます。ただし、Windows サービスの場合はそうではありません。

では、プログラムをサービスとして実行し、HOMEPATH 環境変数を使用する場合、それはどこにマップされるのでしょうか?

答え1

サービスは通常、3つのサービスアカウントのいずれかで実行されますLocal Service Local SystemNetwork 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'
ここに画像の説明を入力してくださいここに画像の説明を入力してください

関連情報