윈도즈 비스타용 UxTheme 패치(배포:http://www.anti-tgtsoft.com)는 uxtheme.dll, themeui.dll, shsvcs.dll 3개의 컴퍼넌트 파일을 System32에 넣어야 하는데, 권한과 소유권을 변경해야 한다. 수동으로 해야할 일을 직접 명령어를 사용해서 배치 파일 스크립트로 만들었다. 관리자 권한으로 시스템 컴퍼넌트 파일을 마구잡이식으로 변경한다면 오류가 발생할 수 있으므로 명령어 사용에 신중해야 하는데, 아예 icacls, takeown, 접근 제어 목록(
ACLs)에 관한 명령어로 배치 파일을 작성했다. 배우기(Mr.Learn)도 쉽지많은 않았지만, 이 과정에서 명령어를 보다 잘 이해할 수 있었기에 리소스핵이 가능한 시스템 컴포너트 파일의 접근도 어렵지 않게 되었다. 여기서는 테마를 사용하기 위한 패치(배치파일)와 함께 소스에 주석을 달아 놓았다.
Uxpatch 패치 실행
0. 로그온상 사용자는 윈도즈 비스타 기본 관리자 계정인 Administrator 또는 관리자 그룹의 일원이어야 한다.
1. 먼저
uxtheme_with_wnw.zip 파일을 다운받아 압축을 풀어 놓는다. (여기서는 윈도즈 비스타의 다운로드 폴더에 내려받기가 되는 것으로 전제한다.)
2. 위에 그림에서 처럼 시작버튼을 클릭하고 검색상자에 cmd라고 입력한 후에 바로 ctrl + shift + enter를 눌러준다. 이렇게하면 관리자로 cmd.exe를 실행하게 되는데, UAC경고창이 뜨면
계속한다.
3. 아래 그림에서 처럼 cmd 창이 뜨면 cd %homepath%라고 입력해서 자신의 홈계정으로 이동한다.
4. 현재(홈계정) 경로에서 윈도즈 탐색기로 연다(사용자:Mr.Learn)
C:\Users\Mr.Learn>explorer .
5. 다운로드 받은 파일에 압축을 풀고 4번에서 열린 홈계정으로 복사해 넣는다.
폴더명이 uxtheme_with_wnw라 가정하고 홈계정 C:\Users\Mr.Learn로 복사해 넣으면 되지만, 폴더명이 uxtheme_with_wnw이 아닌 간단하게 줄여도 된다.
(C:\Users\Mr.Learn\uxtheme_with_wnw)
6. 이제 uxtheme_with_wnw으로 이동한다.
C:\Users\Mr.Learn>cd uxtheme_with_wnw
7. uxpatch.cmd라고 실행한다.
C:\Users\Mr.Learn\uxtheme_with_wnw\uxpatch.cmd 또는
C:\Users\Mr.Learn\uxtheme_with_wnw\uxpatch
8. 재부팅한 후 3rd party 테마를 실행한다.
주의 사항: 위에 배치파일을 연속적으로 실행하면 안된다. 패치를 위해서 단 1회만 실행하고, 아래 복원도 단 1회만 해야한다.
패치 소스 설명
::::::::::::::::::::::::::::::::::::::::::::::::::
:: Created by 배우기(Mr.Learn) - 05/28/2007
:: site: VISTA.winnwe.com, email:admin@winnwe.com
::::::::::::::::::::::::::::::::::::::::::::::::::
:: Full source is availiable under the GNU lisence.
::::::::::::::::::::::::::::::::::::::::::::::::::
:: Batch File Name : uxpatch.cmd
:: uxtheme patch(uxtheme.dll, themeui.dll, shsvcs.dll)
::::::::::::::::::::::::::::::::::::::::::::::::::
:: Updated 06/15/2007
::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
icacls %WinDir%\system32\uxtheme.dll /save uxtheme.dll.acl
icacls %WinDir%\system32\themeui.dll /save themeui.dll.acl
icacls %WinDir%\system32\shsvcs.dll /save shsvcs.dll.acl
:: icacls명령으로 패치할 파일들의 ACL 정보를 백업한다.
takeown /f %WinDir%\system32\uxtheme.dll
takeown /f %WinDir%\system32\themeui.dll
takeown /f %WinDir%\system32\shsvcs.dll
:: 파일을 제어하기 권한을 확보하기 위해서 소유권을 취한다.
icacls %WinDir%\system32\uxtheme.dll /grant:r %UserName%:(F)
icacls %WinDir%\system32\themeui.dll /grant:r %UserName%:(F)
icacls %WinDir%\system32\shsvcs.dll /grant:r %UserName%:(F)
:: 파일에 액세스할 계정의 권한을 ACL에 등록한다.
ren %WinDir%\system32\uxtheme.dll uxtheme.dll.OLD
ren %WinDir%\system32\themeui.dll themeui.dll.OLD
ren %WinDir%\system32\shsvcs.dll shsvcs.dll.OLD
:: 원본 파일을 .OLD로 백업한다.
copy uxtheme.dll %WinDir%\system32\uxtheme.dll
copy themeui.dll %WinDir%\system32\themeui.dll
copy shsvcs.dll %WinDir%\system32\shsvcs.dll
:: 패치 파일들을 복사해 넣다.
echo DONE! please REBOOT.
:작업 끝이므로 재부팅해서 적용한다.
패치는 간단하다. 그러나 만일의 경우를 대비하기 위해서 복구할 ACL정보를 저장해 두는데 홈계정에 .ACL이라는 파일로 생성되므로 만일 원본 파일로 복원할 경우는 이 파일을 잘 보관해 둔다. 그래픽 셸에서는 대충 읽거나 쓸 수 있는 권한 또는 모든 권한을 생성해 주면 되지만, 위에 명령어들은 복원을 위해 필요한 명령들이 포함되어져 있다고 할 수 있다. 따라서 위에 정보를 이용해서 완벽하게 복원할 수 있다.
Uxpatch 패치 복원 -
2007년 6월 16일 소스 수정
패치시 홈계정에 생성된 .ACL파일이 다시 홈계정에 있는지 확인하고, 없으면 홈계정에 넣어주고 uxpatch_r1.cmd를 실행한다.
C:\Users\Mr.Learn\uxtheme_with_wnw>uxpatch_re1
소스 설명:
::::::::::::::::::::::::::::::::::::::::::::::::::
:: Created by 배우기(Mr.Learn) - 05/28/2007/
:: site: VISTA.winnwe.com, email:admin@winnwe.com
::::::::::::::::::::::::::::::::::::::::::::::::::
:: full source is availiable under the GNU lisence.
::::::::::::::::::::::::::::::::::::::::::::::::::
:: Batch File Name : uxpatch_r1.cmd
:: restore uxpatch(uxtheme.dll, themeui.dll, shsvcs.dll)
::::::::::::::::::::::::::::::::::::::::::::::::::
:: Updated 06/16/2007
::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
takeown /f %WinDir%\system32\uxtheme.dll
takeown /f %WinDir%\system32\themeui.dll
takeown /f %WinDir%\system32\shsvcs.dll
:: 컨트롤할 파일의 개체 소유권을 취한다.
icacls %WinDir%\system32\uxtheme.dll /grant:r %UserName%:(F)
icacls %WinDir%\system32\themeui.dll /grant:r %UserName%:(F)
icacls %WinDir%\system32\shsvcs.dll /grant:r %UserName%:(F)
:: ACL에 자신을 등록해서 모든 권한을 취한다.
ren %WinDir%\system32\uxtheme.dll uxtheme.dll.DEL
ren %WinDir%\system32\themeui.dll themeui.dll.DEL
ren %WinDir%\system32\shsvcs.dll shsvcs.dll.DEL
:: 제거할 파일을 임시이름으로 변경한다.
ren %WinDir%\system32\uxtheme.dll.OLD uxtheme.dll
ren %WinDir%\system32\themeui.dll.OLD themeui.dll
ren %WinDir%\system32\shsvcs.dll.OLD shsvcs.dll
:: 백업해 두었던 파일을 복원한다.
icacls %WinDir%\system32\uxtheme.dll /setowner "NT Service\TrustedInstaller"
icacls %WinDir%\system32\themeui.dll /setowner "NT Service\TrustedInstaller"
icacls %WinDir%\system32\shsvcs.dll /setowner "NT Service\TrustedInstaller"
:: 개체 소유권을 본래의 소유자 TrustedInstaller로 넘겨준다.
icacls %WinDir%\system32\ /restore uxtheme.dll.acl
icacls %WinDir%\system32\ /restore themeui.dll.acl
icacls %WinDir%\system32\ /restore shsvcs.dll.acl
:: ACL을 복원한다.
echo DONE! please REBOOT.
이제 완벽하게 패치전 상태로 복원했으므로 리부팅한다.
파일이 사용중이라는 메시지와 함께 삭제되지 않으므로 재부팅하면 확장자 .DEL은 삭제가 될 것이다. 따라서 수동으로 삭제하던지 아니면
C:\Users\Mr.Learn\uxtheme_with_wnw>uxpatch_re2
를 실행한다.
다운로드 :
uxtheme_with_wnw.zip (2007년 6월 16일 업데이트)
다운로드 :
uxtheme.OLD.zip - 잘못되었을 때를 대비한 오리지날 파일, system32에 .OLD를 복사해 넣고 uxpatch_r1, uxpatch_r2 실행 후 상속된 권한 제거를 해야 오리지날로 복원된다. (주의: x86파일임)
Enjoy!
+ 최근 업데이트 2007년 6월 15일
패치실행을 관리자 권한을 가진 Mr.Learn가
권한상승한 관리자 권한으로 커맨드 셸을 실행한 후에 간단하게 uxpatch라고 입력하면 아래와 같이 실행된다. 그리고
1 파일을 처리했으며 0 파일은 처리하지 못했습니다는 오류가 아닌 정상적인 실행결과이다.
C:\Users\Mr.Learn\uxtheme_with_wnw>uxpatch
처리된 파일: C:\Windows\system32\uxtheme.dll
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.
처리된 파일: C:\Windows\system32\themeui.dll
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.
처리된 파일: C:\Windows\system32\shsvcs.dll
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.
성공: 이제 파일 또는 폴더 "C:\Windows\system32\uxtheme.dll"을(를)
사용자 "PIZZAJO\Mr.Learn"이(가) 소유합니다.
성공: 이제 파일 또는 폴더 "C:\Windows\system32\themeui.dll"을(를)
사용자 "PIZZAJO\Mr.Learn"이(가) 소유합니다.
성공: 이제 파일 또는 폴더 "C:\Windows\system32\shsvcs.dll"을(를)
사용자 "PIZZAJO\Mr.Learn"이(가) 소유합니다.
처리된 파일: C:\Windows\system32\uxtheme.dll
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.
처리된 파일: C:\Windows\system32\themeui.dll
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.
처리된 파일: C:\Windows\system32\shsvcs.dll
1 파일을 처리했으며 0 파일은 처리하지 못했습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
DONE! please REBOOT.
수동으로 그래픽 UI를 통해서 일일이 파일 권한을 조정해야 할 것을 위에서 처럼 uxpatch라는 명령어 한방으로 실행되도록 배우기(Mr.Learn)가 스크립트를 작성한 것이며, 실행에는 아무런 문제가 없음을 재차 확인함! 복구 스크립트는 재작성 예정.
+ 최근 업데이트 2007년 6월 16일
삭제되지 않는 문제는 dll이 사용중이므로 재부팅하면 삭제가 가능하다. 또한 삭제는 먼저 확장자 이름을 .DEL로 변경해 놓은 후에 재부팅해서 확장자 .DEL을 삭제하면 완전하게 복원 된다. 2007년 6월 16일자로 스크립트 및 업로드 파일 최종 경신.
무식한 것인지 용감한 것인지, 네이버 상습 펌질 및 양심불량 블로그(
blog.naver.com/spef)는 윈앤위 게시물 모두 삭제하십시오!
개인 운영 사이트라고 만만하게 생각하고 콘텐츠 복제하나본데 그러다가 큰코 다칩니다.
저작권자 동의없이 콘텐츠 복제를 금합니다. 동의를 거쳐서
이용 규칙을 준수하십시오!
작성날짜 : 2007년 05월 28일
작성시간 : PM 11시 45분 26초
퍼브리셔 :
배우기(Mr.Learn)
저작권자 : Powered by 윈앤위
코멘트는 누구에게나 열려 있습니다.
트랙백도 블로거에게 열려 있습니다.