응용프로그램2008. 9. 19. 05:25

  1. temp 환경변수가 어디에 쓰이는 건지 모른다면 이 글을 안 읽어도 됩니다.
  2. 찾아보니 환경변수 자동으로 추가하기라는 글이 있었습니다. 콘솔 명령어를 이용해 레지스트리에 환경변수를 추가하는 방법입니다. 저는 당연히 temp 환경변수도 이 방법으로 바뀌는 줄 알았습니다. 네, 그런데 아니었습니다. 아니, 바뀌긴 바뀝니다. 하지만 바로 적용되진 않습니다-_-
  3. 저는 램 3기가 중에서 512메가를 램디스크(Y:)로 활용하고 있습니다. 당연히 IE 임시 폴더나 윈도우 임시 폴더 역시 Y:에 두고 사용하는 거죠(파폭은 예외. 그냥 메모리 상에서 해결합니다-_-). 그런데 덩치가 큰 인스톨러를 설치할 때 임시 폴더의 용량이 부족한 경우가 종종 생깁니다. 사실 어떤 멍청한(...) 프로그램들은 이 문제 때문에 실행이 안 되기도 합니다. 이런 경우에는 그때그때마다 임시 폴더를 용량 넉넉한 하드(주로 K:)에 잡아주는 방법으로 문제를 해결해왔습니다.
  4. 그런데 일일이 제어판>시스템>고급>시스템 등록 정보에 들어가서 손으로 고치는 게 귀찮아지던 찰나에 위에서 소개한 글을 발견했고, 직접 배치 파일을 만들어 적용해봤습니다. 하지만 유감스럽게도 temp 환경변수는 저 방법으로 안 되더군요.
    인스톨러 용량이 램디스크 용량을 초과하는 경우

    인스톨러 용량이 램디스크 용량을 초과하는 경우

  5. 물론 레지스트리상 임시 폴더는 K:로 바뀐 상태입니다. 그런데 거듭 말하지만, 레지스트리 값만 바뀌었을 뿐 시스템은 Y:를 임시 폴더로 인식하고 있는 겁니다.
  6. 제어판>시스템>고급>시스템 등록 정보에 들어가 확인해봐도 K:로 잡혀있습니다. 무심코 확인을 눌렀죠. 1~2초 정도 시간이 걸립니다.
  7. 그리고 위 스샷의 프로그램을 다시 설치하자 이번엔 설치가 됩니다...
  8. .......어째서-_-?
  9. 결론은 그런 겁니다. temp 환경변수의 경우는 레지스트리를 수정한다고 바로 적용되는 게 아니라 시스템 등록 정보에서 직접 확인을 클릭해줘야 적용이 된다는 얘기입니다. 물론 재부팅을 해도 당연히 적용되겠지만; 그건 의미가 없죠;
  10. 하지만 이래서야 자동으로 바꾼다고 할 수가 없지 않습니까. 그래서 매크로를 만들어버렸습니다-_-

먼저 배치파일.
@echo off
set /p DRIVE=type the drive letter:
cd %DRIVE%:\
if errorlevel 1 goto NOPE
if not exist %DRIVE%:\temp md %DRIVE%:\temp
reg add HKCU\Environment /v TEMP /d %DRIVE%:\temp /f
reg add HKCU\Environment /v TMP /d %DRIVE%:\temp /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v TEMP /d %DRIVE%:\temp /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v TMP /d %DRIVE%:\temp /f
c:\set_temp_activate_now.ahk
echo job completed. your temp path is now %DRIVE%:\temp.
pause
exit
:NOPE
echo cannot access %DRIVE%:. job canceled.
pause
exit

그리고 다음이 매크로 파일입니다(위의 배치 파일에서 호출하는 c:\set_temp_activate_now.ahk).
Run rundll32.exe shell32.dll`,Control_RunDLL sysdm.cpl`,`,3
WinWait 시스템 등록 정보
SendRaw n
WinWait 환경 변수
Send {Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Enter}
WinWaitClose 환경 변수
WinWaitActive 시스템 등록 정보
Send {Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Enter}

매크로 프로그램 AutoHotKey가 필요합니다. 설치도 필요없고 스크립트도 쉬운 프리웨어더군요. 꽤 괜찮은 녀석이었습니다. 이런 지저분한 방법을 통해 겨우 재부팅하거나 손으로 일일이 클릭할 필요없이 임시 폴더를 자동으로 바꿀 수 있었습니다. 윈도우의 불편함이 느껴지는 부분이죠. 덧붙이자면, 위의 배치 파일에서는 레지스트리 값을 덮어쓰는 방식을 취하고 있는데, 레지스트리 값을 지운 다음에 추가해봐도 결과는 똑같았습니다. 직접 시스템 등록 정보 들어가서 클릭해주는 수밖에 없습니다. 참고로 저는 프로페셔널 서비스팩3를 사용중입니다. 서팩2에서는 어떨지 잘 모르겠지만, 아마 똑같지 않을까 싶네요.


Posted by 필유