
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'
.
.