"네트워크 서비스" 사용자에 대한 TEMP 환경 변수를 어떻게 설정합니까?

"네트워크 서비스" 사용자에 대한 TEMP 환경 변수를 어떻게 설정합니까?

우리는 Path.GetTempFile 및 Path.GetTempPath 호출을 사용하여 임시 파일을 상당히 자주 작업하는 시스템을 보유하고 있습니다. 이 시스템은 "네트워크 서비스" 사용자로도 실행됩니다. C 드라이브의 공간이 부족하다는 사실을 발견하고(다른 문제의 경우 임시 파일이 올바르게 정리됨) 임시 디렉터리를 다른 드라이브로 이동할 수 있기를 원합니다.

이에 대한 가장 쉬운 해결책은 네트워크 서비스 사용자에 대한 TMP 또는 TEMP 환경 변수를 변경하는 것 같지만, 내 사용자 또는 네트워크 서비스 사용자 프로필에 의해 덮어쓰여지는 "시스템" 변수만 설정할 수 있는 것 같습니다. 네트워크 서비스 사용자에 대해 이러한 변수를 어떻게 설정합니까?

답변1

실제로는 꽤 어렵습니다. 명령 을 사용하여 setx다른 사용자를 위한 영구 환경 변수를 설정할 수 있지만 서비스 계정에 비밀번호가 없기 때문에(그래서 자격 증명이 항상 거부됨) NetworkService에서는 작동하지 않습니다.

내가 아는 유일한 방법은 작업 스케줄러를 사용하는 것입니다.

  1. 사용자 "네트워크 서비스"로 실행할 작업을 설정합니다.
  2. 트리거를 비워 두세요.
  3. 작업의 경우 cmd.exe매개변수를 사용 하여 실행합니다 /c setx temp [target].
  4. 작업을 수동으로 실행합니다.
  5. 작업을 삭제합니다.

이는 NetworkService 사용자에 대한 영구 환경 변수를 설정하는 데 사용됩니다. 이것이 해당 사용자의 임시 파일을 재배치하는 데 성공적으로 작동할 것인지, 아니면 예측할 수 없는 부작용을 일으킬 것인지에 대해서는 확실하게 말할 수 없습니다. 원하는 위치에 임시 파일을 저장하고 있는지 확인하려면 재부팅해야 할 수도 있습니다.

environmentWMIC 내의 명령을 사용하여 올바른 사용자에 대해 환경 변수가 변경되었는지 확인할 수 있습니다 .

답변2

계정 의 환경 변수는 Network ServiceWindows 레지스트리에 저장되며 regedit: 로 수정할 수 있습니다 HKEY_USERS\S-1-5-20\Environment.

관련 정보