Win7 -우클릭 메뉴 설정(펌)

2017. 11. 16. 20:55IT-OS/Window

반응형


(펌)을 다시 (펌) ...ㅠㅠ

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"에서 보면 대부분 음수를 써서 번호를 적어주면 틀리지는 않습니다.


출처 // http://winforum.kr/2422408


 Win7ContextMenu.zip



출처: http://yong40.tistory.com/entry/Win7-우클릭-메뉴-설정펌 [nofile setup]



옮기기도 어렵다~ ㅠㅠ... 저 공부용입니다.