강좌 / 팁

윈 도 우 Win7 -우클릭 메뉴 (모음&자작)

2011.05.29 16:34

eunnano 조회:13515

기존에 자료실에 올렸던 자료는 삭제했습니다. 레지스트리 경로와 명령줄이 변경된 것이 많으니 삭제후 사용하세요.

 

1. TakeOwnerShip.reg (AllFilesystemObjects, Shift)

설명을 위해 잘 알려진 이 자료 부터 소개합니다. 소유권을 가져와서 모든 권한을 부여하는 레지입니다.

 

HKEY_CLASSES_ROOT\*\shell\runas

(기본값)=Take OwnerShip

HKEY_CLASS_ROOT\*\shell\runas\command

(기본값)=cmd.exe /c takeown /f "%1" && icacls "%1" /grant Administrator:F

 

HKEY_CLASSES_ROOT\Directory\shell\runas

(기본값)=Take OwnerShip

HKEY_CLASS_ROOT\Directory\shell\runas\command

(기본값)=cmd.exe /c takeown /f "%1" /r /d y && icacls "%1" /grant Adninistrator:F /t

 

*\shell 의 경로로 등록하면 * (와일드카드)가 '모든 파일들'을 의미하기 때문에 확장자에 관계없이 모든 파일에서 이 우클릭 메뉴를 사용할 수 있습니다.

Directory\shell 의 경로로 등록하면 Directory 가 '파일 폴더들'을  의미하기 때문에 '파일 폴더'에서 이 우클릭 메뉴를 사용할 수 있습니다.

이렇게 하면 모든 파일과 디렉토리에서 이 우클릭 메뉴를 사용할 수 있어야 하는데 실제로는 적용되지 않는 경우가 있습니다.

이유는 .exe 를 비롯한 몇몇 확장자와, 내 컴퓨터를 뜻하는 {20D04FE0-3AEA-1069-A2D8-08002B30309D} 외의 몇몇 디렉토리에는 이미 runas 키가 등록되어 있기 때문입니다. 그 중에 소유권을 얻어야할 필요가 있는 .exe 파일에 대하여 추가로 등록해 줍니다.

 

HKEY_CLASSES_ROOT\exefile\shell\runas2\command

(기본값)=cmd.exe /c takeown /f "%1" && icacls "%1" /grant Administrator:F

 

exefile 은 .exe 파일에 대한 Program ID 입니다.

참고: 명령창에서 ASSOC 를 치면  시스템에 등록된 파일 확장자에 대한 ProgID 를 보여 줍니다.

 

HKEY_CLASSES_ROOT\.exe

(기본값)=exefile

 

어떤 파일 확장자의 기본값에 ProgID 가 등록되지 않은 경우라면 .확장자\shell 의 경로로 등록해도 되지만 그렇지 않으면 ProgID\shell 의 경로로 등록해야 작동이 됩니다.

키 이름이 runas 로 되어 있으면 윈도우는 관리자 권한으로 해당 명령을 실행시켜 줍니다. .exe 파일의 우클릭 메뉴의 '관리자 권한으로 실행' 이 runas 키를 사용합니다. 때문에 exefile\shell\runas2 키를 사용했는데 이 runas2 키는 할 수 없이 이름만 유사하게 사용한 것이지 관리자 권한으로 실행되지는 않습니다.

 

위에 *, Directory 에 적용되는 두가지 레지를 제가 다음과 같이 바꿔 봤습니다.

 

HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\runas

Extended=""

HasLUAShield=""

NoWorkingDirectory=""

MUIVerb=@%SystemRoot%\System32\RSHX32.DLL,-35

 

HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\runas\command

(기본값)=cmd.exe /c takeown /f "%1" /r /d y>nul 2>&1 &if not errorlevel 1 (icacls "%1" /grant *S-1-5-32-544:F /t) else (takeown /f "%1" && icacls "%1" /grant *S-1-5-32-544:F)

 

AllFilesystemObjects 은 모든 파일과 모든 폴더를 의미합니다. *와 ,Directory 를 포함하는 경로이기 때문에 위의 두가지에 적용시킨것과 마찬가지로 작동됩니다. (참고로, HKEY_CLASSES_ROOT\Folder 는 모든 폴더를 의미합니다.) 다만 takeown 과 icacls 명령이 파일과 디렉토리에 적용되는 명령이 다르기 때문에 if ~명령1 else 명령2 로 해결했습니다. 레지스트리에 등록할 수 있는  명령은 한 줄로 된 명령만 등록할 수 있습니다. '응용프로그램 매개변수 옵션' 이런 형식입니다. 그런데 cmd.exe 는 & 기호를 사용하여 여러 명령을 한 줄로 붙여서 사용할 수 있는 기능이 있습니다. 제한 사항은 명령이 아닌 레이블이나 괄호를 사용한 다중 명령을 사용할 수 없다는 점입니다. 저는 주로 echo 명령으로 %temp% 폴더에 배치파일을 만들어서 실행시키는 방법을 사용했습니다. 또 하나의 제한 사항은 값 데이타 크기에 제한 사항이 있습니다. 대략 4KB 전후가 한계입니다. 가끔가다 2KB 전후가 한계인 경우도 있습니다. 4KB 면 글자수로 대략 2000자 내에서 사용할 수 있습니다.

Extended 값이 추가되면  Shift 키를 누른채 우클릭해야만 나타납니다. Extended 를  사용한 레지에서는 (Shift) 라고 표시했습니다.

HasLUAShield 값이 추가되면 UAC의 방패모양 아이콘이 표시됩니다. 아이콘이 표시되는 것 외에는 다른 의미는 없습니다. 제가 dism.exe, pnputil.exe, Imagex.exe, bcdedit.exe 등 관리자 권한으로 실행되어야 하는 곳에는 부득이하게 runas 키를 사용한 곳이 있는데  HasLUAShield 값을 추가해 놓았습니다.

NoWorkingDirectory 는 관련된 설명을 마땅히 찾지 못했습니다. 순정 상태의 레지스트리에 사용되어 있는 곳은 '여기서 명령창 열기'에 사용되어 있습니다.

MUIVerb 값은 MUI 호환 문자열 정의에 사용됩니다. 값 데이타가 @%SystemRoot%\System32\RSHX32.DLL,-35 인데 RSHX32.DLL.mui 의 stringID 35번의 문자열을 사용한다는 뜻입니다.  영문 윈도우에서는 'Take OwenerShip' 이라 표시되고 한글 윈도우에서는 '소유권 가져오기'라고 표시됩니다. 해당 윈도우의 en-US ,ko-KR 폴더에서 RSHX32.DLL.mui 을 7zip 으로 열여보시면 string.txt 파일이 있는데 이 파일을 열어서 확인해 보시면 알 수 있습니다. (ko-KR 폴더에서 추출한 string.txt 는 notepad.exe 로 열어보면 글자가 깨져 보입니다. notepad++ 을 사용해 보세요>)

 

2. 7zGetMuiStringTxt.reg (.mui)

.mui 파일 안의 string.txt 를 확인해 보기 위해서 우클릭 메뉴로 만들어 봤습니다. System32 폴더에 있는 en-US ,ko-KR 폴더에는 천개가 넘는 .mui 파일이 있습니다. 해당 디렉토리에 있는 모든 .mui 파일의 압축을 %temp% 폴더에 풀어서 string.txt 를 가져오고 나머지는 삭제시킵니다. 7zip 이 Program Files 폴더에 설치되어 있어야만 사용할 수 있습니다.

 

3. FindString.reg (Directory\Background, Shift)

위에서 압축을 풀어서 가져온 string.txt 파일을 사용하기 위해서 문자열을 검색할 수 있도록 만들었습니다. 제가 아는 한에서 문자열을 검색할 수 있는 자체 유틸로 Find.exe 와 Findstr.exe 가 있는데 Findstr.exe 는 string.txt 에서 검색을 전혀 못하고 Find.exe는 en-US에 들어 있는 mui 파일의 string.txt 중에서 어떤 파일만 부분적으로 검색이 되고 ko-KR은 전혀 검색을 안됩니다. 아마 유니코드로된 문서파일은 제대로 검색을 못하는 것 같습니다. Win7 자체 유틸 중에 파일을 비교할 수 있는 Fc.exe 파일이 있는데 비교결과 출력을 아스키 형식으로 출력하는 것 같습니다. 그래서 빈 파일을 만들어 위 string.txt 와 비교하고 그 출력을 받아서 Find 명령으로 검색하도록 했습니다. [U]nicode ,or [A]scii? 의 명령프롬프트에서 u 를 클릭하면 Fc.exe를 사용하고 a 를 클릭하면 Find.exe 만 사용하는 것입니다.

 

4. Compare.reg (*, Shift)

위에서 말한 Fc.exe 를 이용해 파일을 비교하는 것입니다. 첫번째 파일 클릭에 파일 경로 정보가 %temp% 폴더에 저장되고 두번째 파일 클릭에 첫번째 클릭한 파일과 비교합니다.

 

5. ShellnewTxt.reg (우클릭-새로 만들기)

우클릭- 새로 만들기- '새 텍스트 문서'를 '텍스트 문서'로 변경시키고 만들어진 .txt 의 파일명을 '새 텍스트 문서'에서 '텍스트 문서'로 변경시킵니다.

 

6. CreateDocument.reg (Directory\Background)

우클릭- 새로 만들기의 서브 메뉴가 아닌  우클릭에서 바로 .txt 문서를 만드는 메뉴입니다. 파일명을 무엇으로 할까?가 문제인데 %USERPROFILE%\AppData\Roaming\Microsoft\Windows\SendTo\문서.mydocs  파일이 언어 버전별로 다르게 나타나는 것 같아 이 파일에서 파일명을 참조했습니다. 영문에서는 Document1, Document2,... 한글에서는 문서1 ,문서2.... 이런 식으로 만들어 집니다.

 

7. ControlPanelShortcut.reg (DesktopBackground)

몇몇 제어판 바로가기가 등록되어 있습니다.

 

8. CreateVHD.reg (Directory\Background, Shift)

diskpart 를 이용한 명령줄로 VHD를 생성합니다.

 

9. DiskClean.reg (Directory\Background)

IE의 검색기록 삭제, 디스크 정리, %temp% 폴더 비우기등..

 

10. EnvironmentVariable.reg (DesktopBackground)

환경 변수 폴더 바로가기 입니다.

 

11. InfPnPUtil.reg (.inf)

.INF 형식의 드라이버를 설치할 때 보통은 장치관리자에서 경로를 지정해서 설치하는데 이것은 Pnputil.exe 를 이용해 설치하는 것입니다.

 

12. MsiPassiveInstall.reg (.msi)

msiexec.exe 의 명령줄 옵션에 /passive 옵션이 있는데 진행 표시줄만 표시하고 무인 모드로 설치하는 것입니다.

 

13. MsuDismInstall.reg (.msu)

.msu 파일을 wusa.exe 가 아닌 현재 디렉토리의 모든 .msu 에 대해서 %temp% 폴더에 압축을 푼다음 dism.exe /online /add-package /packagepath:  /IgnoreCheck /norestart 명령줄로 설치합니다.

 

14. ProgramFiles(x86)IE.reg, ProgramFilesIE.reg (DesktopBackground)

IE를 명령줄 옵션으로 실행시키는 것입니다.

 

15. RegSilentMerge.reg (.reg)

regedit /s 명령을 사용하여 병합시키는 것입니다.

보통은 .reg 파일을 16개 이상 선택후 우클릭하면 관련된 메뉴가 나타나지 않습니다. 기본값이 15개까지 입니다.

 

"MultiSelectModel"="Player"  값을 추가해주면 15 이상 선택해도 사용할 수 있습니다.

"MultiSelectModel"="Single"   은 1개를 초과하여 선택시 우클릭하면 사용할 수 없도록 제한합니다. 위 MsuDismInstall.reg 에 적용했습니다. 그렇지 않으면 선택한 갯수만큼 반복적으로 작동이 되기 때문입니다.

 

16. RestartExplorer.reg (DesktopBackground)

시스템 변경사항을 적용하는데 가장 좋기로는 시스템을 다시 시작하는 것이지만 부분적으로는 Explorer.exe 만 다시 시작해도 변경사항이 적용되는 경우가 있습니다. taskkill 명령으로 Explorer.exe를 강제로 종료시켰다 다시 시작합니다.

 

17. SearchFile.reg (Drive, Folder)

파일 검색 메뉴 인데, 예전에는 Dir /s 명령을 사용했지만 Where /r 명령으로 바꿨습니다. 체감 속도는...

 

18. SelectAll.reg (Directory\Background)

'모두 선택' 메뉴입니다.

 

19. ShowExt.reg ,ShowHidden.reg (Directory\Background)

'파일 확장자 표시'와 '숨김 파일 표시'입니다. %temp% 폴더에 .vbs 파일을 만들고 실행 시킵니다. 작동하는 방식은 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced 경로의 레지스트리 값을 변경시키고 새로 고침을 하는 것인데 이 '새로 고침'에 해당하는 cmd 명령이 없는 것 같습니다. Explorer.exe 를 다시 시작 시키면 되지만 ..

 

20. VHD.reg (.vhd)

VHD 연결 ,분리 ,Compact ,부팅등록 메뉴를 사용할 수 있습니다.

InfoTip -마우스를 올리면 설명이 나타납니다.

DefaultIcon- 탐색기에서 표시되는 아이콘을 추가로 적용해 봤습니다.

 

21. WIM.reg (.wim, .swm)

Imagex 메뉴와 분할 파일인 .swm 메뉴를 추가했습니다. Windows 폴더나 System32 폴더에 imagex.exe 파일이 있어야 사용할 수 있습니다. win7 sp1 설치 이미지 파일의 sources 폴더 안에 dism.exe(17154 버전)은 많은 기능이 빠져 있는 것 같습니다.

dism.exe 로 시작하는 명령줄 때문에 위의 dism.exe 가 실행되어서 여러가지 작동이 안되는 문제점이 있어서  %SystemRoot%\System32\dism.exe(16385 버전) 로 수정했습니다.

Dism 메뉴의 분할선은 "CommandFlags"=dword:00000020 를 추가해 주면 해당 메뉴의 앞쪽에 분할선을 만들어 주고, "CommandFlags"=dword:00000040 값을 추가해 주면 해당 메뉴의 뒤쪽에 분할선을 만들어 줍니다.

 

---------------------------------------------------------------

다음은 기존에 있는 레지에 아이콘이나 문자열 값만 변경시킨 것입니다.

 

22. AxDllOcx.reg (.ax .dll .ocx)

regsvr32 "%1"  명령을 사용합니다. 표시되는 문자열 값을 변경시켰습니다.

 

23. KillNotRespondingTasks.reg (DesktopBackground)

taskkill /F /FI "STATUS eq NOT RESPONDING"  명령을 사용합니다. 아이콘 값 추가했습니다.

 

24. RecycleBin.reg (DesktopBackground)

우금티님이 올려 놓은 자료인데 중복이지만 같이 올립니다. 휴지통 비우기 우클릭 메뉴입니다. 변경된 사항 없습니다.

-----------------------------------------------------------------

 

시스템 아이콘 값을 보려면 "iconsext.exe" 이란 유틸을 추천합니다. System32 폴더의 모든 파일의 아이콘을 보여주고 또한 한꺼번에 추출할 수 있습니다. 아이콘을 적용하려면 "Icon"="DLL,EXE의 파일경로,-리소스ID" 혹은 "Icon"="DLL,EXE의 파일경로,인덱스번호"를 사용합니다. "iconsext.exe"에서 보면 대부분 음수를 써서 번호를 적어주면 틀리지는 않습니다.

 

<수정-2011.11.23>

몇가지를 수정해서 다시 올렸습니다.

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
1066 윈 도 우| X64도 지원하는 휠가속 유틸 입니다. [9] Andrei Sak 9059 0 06-11
1065 윈 도 우| 인터넷익스플로러속도와 인덱싱문제 [11] ▒벗님▒ 20064 0 06-11
1064 소프트웨어| 윈도우7과 Mac OS X 설치하고 멀티부팅까지 [32] 이건뭔가요 36480 2 06-08
1063 윈 도 우| 모뎀 속도문서 번역부탁 [7] 마이종 6205 0 06-08
1062 윈 도 우| Windows 7 Boot Screen 바꾸기 [9] 우주선 13015 0 06-07
1061 윈 도 우| 윈도우 7 개발 순기 및 단계와 배포버전 x86 x64 관계 [19] Old EE 7164 0 06-06
1060 윈 도 우| 시작메뉴에서 빠른 관리자 권한 실행 [2] OLokLiR 7986 0 06-02
1059 윈 도 우| ReadyFor4GB 사용 후 부팅메뉴 빨리 지나가게 하기 [7] OLokLiR 12128 0 06-02
1058 소프트웨어| BB FlashBack으로 우리도 사용후기 멋진 동영상으로 올려보... [7] 레드 썬 6832 0 06-02
1057 소프트웨어| BB FlashBack으로 우리도 사용후기 멋진 동영상으로 올려보... [4] 레드 썬 6449 0 06-02
1056 소프트웨어| BB FlashBack으로 우리도 사용후기 멋진 동영상으로 올려보... [7] 레드 썬 8587 0 06-02
1055 윈 도 우| 이동-복사-바로가기키 Win7 유용한_키 [7] DaGolBin 7425 0 05-31
» 윈 도 우| Win7 -우클릭 메뉴 (모음&자작) [19] eunnano 13515 0 05-29
1053 소프트웨어| 포터블앱스의 자바(JRE) 포터블 설치 및 사용법 [4] -수- 8667 0 05-27
1052 소프트웨어| Nightly 7.0a1 부가기능 호환성 문제 해결 그레이스 5465 0 05-26
1051 윈 도 우| 외장그래픽인데도 사용가능메모리<설치메모리 해결하기 [4] rt041 12584 0 05-26
1050 소프트웨어| chrome 주소창 제거방법 [4] binson 10477 0 05-22
1049 윈 도 우| 빈 탭에 표시되는 ''자주 방문하는 사이트'' 줄의 수 늘리... [3] 이즈미짱 14653 0 05-21
1048 하드웨어| 요즘 2.4g 무선 키보드 및 마우스 많이 쓰시죠. [17] SYSTEM 15827 0 05-18
1047 소프트웨어| 자막 싱크시간 일괄변경 스크립트 [5] 우금티 7695 0 05-18
XE1.11.6 Layout1.4.8