강좌 / 팁

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

2011.05.29 16:34

eunnano 조회:13490

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

 

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 - - -
721 하드웨어| 레인미터 사용기 [16] 고성방가루 13306 0 04-16
720 하드웨어| Ghost15의 새로운 기능! [10] Gim Gyu- 13310 0 01-06
719 윈 도 우| 윈도우 8 오프라인 에서 넷프렘 3.5 설치하기 [4] Lexus 13312 1 03-29
718 윈 도 우| 익스10 32비트 작업표시줄 고정방법 [11] 에드힐스 13313 1 09-18
717 윈 도 우| PE, 윈도우를 USB에 굽기 (울트라ISO사용) [8] Min. 13321 6 08-29
716 소프트웨어| 구글 크롬 펌 방지 해제 방법 올려봅니다. [8] 찐옥수수 13324 0 12-29
715 윈 도 우| 윈도우 10의 백업과 복구 [22] 삽질구단 13328 15 08-04
714 윈 도 우| 윈도8 인증마소랑연결끈기 [18] 별우 13346 2 09-01
713 윈 도 우| 넷북에서 해상도(1024*600)가 낮아서 앱이 실행되지 않는경... 마니또우 13346 0 04-12
712 윈도우7에서 업로드 속도 하락시 해결방안 [22] 미테니사키 13355 2 10-30
711 윈 도 우| VMware 에서 부팅가능한 USB로 실제PC처럼 부팅해보기.... [7] tara 13363 5 04-25
710 소프트웨어| 구글 크롬 글씨 깨짐 현상 해결하기 - 글꼴 강제지정 [7] LiveREX 13374 0 09-28
709 하드웨어| -컴퓨터 최적화하기 3- [26] 납딱콩 13379 2 04-11
708 윈 도 우| 자신의 운영체제 제품키 보기를 원하시는분들... [8] LastID 13383 1 11-11
707 윈 도 우| YouTube<유투브> 버터링 속도 높이기-최종판 [7] 초록날개 13389 0 05-07
706 소프트웨어| 윈도우7 USER-PE 제작 방법_2 [3] 세리아 13389 4 08-23
705 윈 도 우| Windows8을 vhd에 광속으로 설치 (without USB) [16] 오펜하이머 13406 3 09-03
704 소프트웨어| Blu-ray 자막 만들기 (Sonic Scenarist 자막용) [2] 동방전패 13417 0 01-10
703 1편 : 처음 사용자를 위한 VirtualBox -가상머신 만들기- [10] 고담시민 13422 3 10-13
702 하드웨어| OEM 인증 방식이란 gooddew 13438 0 06-17
XE1.11.6 Layout1.4.8