우리는 Path.GetTempFile 및 Path.GetTempPath 호출을 사용하여 임시 파일을 상당히 자주 작업하는 시스템을 보유하고 있습니다. 이 시스템은 "네트워크 서비스" 사용자로도 실행됩니다. C 드라이브의 공간이 부족하다는 사실을 발견하고(다른 문제의 경우 임시 파일이 올바르게 정리됨) 임시 디렉터리를 다른 드라이브로 이동할 수 있기를 원합니다.
이에 대한 가장 쉬운 해결책은 네트워크 서비스 사용자에 대한 TMP 또는 TEMP 환경 변수를 변경하는 것 같지만, 내 사용자 또는 네트워크 서비스 사용자 프로필에 의해 덮어쓰여지는 "시스템" 변수만 설정할 수 있는 것 같습니다. 네트워크 서비스 사용자에 대해 이러한 변수를 어떻게 설정합니까?
답변1
실제로는 꽤 어렵습니다. 명령 을 사용하여 setx
다른 사용자를 위한 영구 환경 변수를 설정할 수 있지만 서비스 계정에 비밀번호가 없기 때문에(그래서 자격 증명이 항상 거부됨) NetworkService에서는 작동하지 않습니다.
내가 아는 유일한 방법은 작업 스케줄러를 사용하는 것입니다.
- 사용자 "네트워크 서비스"로 실행할 작업을 설정합니다.
- 트리거를 비워 두세요.
- 작업의 경우
cmd.exe
매개변수를 사용 하여 실행합니다/c setx temp [target]
. - 작업을 수동으로 실행합니다.
- 작업을 삭제합니다.
이는 NetworkService 사용자에 대한 영구 환경 변수를 설정하는 데 사용됩니다. 이것이 해당 사용자의 임시 파일을 재배치하는 데 성공적으로 작동할 것인지, 아니면 예측할 수 없는 부작용을 일으킬 것인지에 대해서는 확실하게 말할 수 없습니다. 원하는 위치에 임시 파일을 저장하고 있는지 확인하려면 재부팅해야 할 수도 있습니다.
environment
WMIC 내의 명령을 사용하여 올바른 사용자에 대해 환경 변수가 변경되었는지 확인할 수 있습니다 .
답변2
계정 의 환경 변수는 Network Service
Windows 레지스트리에 저장되며 regedit: 로 수정할 수 있습니다 HKEY_USERS\S-1-5-20\Environment
.