본문 바로가기
Windows 꼼지락.../우클릭 메뉴

고수님 윈도우에서 우클릭 메뉴(Context Menu) 추출하기 - 기초편

by OldMac 2017. 6. 10.
728x90


이 포스팅은 윈포 ROEN님의 허락을 받았습니다.

이 자리를 빌어 다시 한번 로앤님께 감사 인사드립니다. 꾸~~~벅

 

부제 : Windows RS2 without APP by ROEN 윈도우에서 우클릭 메뉴 추출하기

 


이 포스팅의 목적은 고수님들 윈도우에 적용된 우클릭 메뉴를

사용하는 윈도우에 적용하여 편리하게 쓰기위한 포스팅입니다.

 

저같은 경우 한글화 윈도우를 공부하면서

어쩔 수 없이 이 부분을 자연스럽게 공부하게 되었습니다.

딴나라 윈도우들 대부분이 한국어팩을 통합하여도

우클릭만은 원래 언어로 나와서 어쩔 수 없이 공부해야 했습니다. ^^;

 

그 동안의 우클릭 경로들을 얼마전에 정리한 부분입니다.

이런 부분에 우클릭이 등록되는구나 하고 가볍게 넘어가면 됩니다.

 



우클릭 메뉴(Context Menu) 레지스트리 경로

 

http://oldnew.tistory.com/322



^^; 그 동안 고수님 소스로 우클릭메뉴를 머리디밀기하다

"나만의 우클릭 메뉴 만들기" 포스팅하려니, 레지스트리 경로들이 아리송해서 이번 기회에 정리합니다.


이 포스팅은 머리디밀기의 경험과 구글링으로 해결하는 부분이라

틀린 부분과 빠진 부분이 존재할 수 있습니다.

언제든지 잘못된 부분과 놓친 부분을 말씀해 주시면 감사하겠습니다. 꾸~~~~벅



윈도우 7 / 8 / 8.1 / 10 에만 해당되며, XP에는 해당이 되지 않습니다.



이 포스팅을 하면서 공부한 곳입니다.

http://mywindowshub.com/add-remove-options-context-menu-windows/


https://www.google.co.kr/search?q=Add+or+Remove+Options+from+Context+Menu&hl=ko&gws_rd=cr&ei=jh0fWcHmMYSu0gTgkZTICA


http://www.online-tech-tips.com/computer-tips/windows-right-click-context-menu/


http://www.guidingtech.com/144/how-to-edit-remove-unwanted-applications-from-right-click-menu-in-windows/


http://moaimoai.tistory.com/166


https://msdn.microsoft.com/en-us/library/windows/desktop/cc144175(v=vs.85).aspx



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


일반적으로 저희들이 말하는 우클릭 메뉴들은 어떤 상황에 조건들이 충족되어야 보여지는 메뉴들입니다.

그래서 상황에 맞는 우클릭 메뉴들은 서로 다른 레지스트리 경로를 가지고 있는데

이러한 레지스트리 경로는 거의 대부분 아래 경로에 포함이 됩니다.


HKEY_CLASSES_ROOT\ 또는

HKEY_LOCAL_MACHINE\Software\Classes\ 경로입니다.


위에 레지스트리 폴더 및 경로는 부족한 제머리로 같은 경로로 이해하고 있어서

자세한 설명은 마소에서 데리고 왔습니다. ^^;

읽어보아도 짧은 지식으로는 모두 이해할 수 없어서 중요한 부분만 암기합니다. ㅋㅋ


레지스트리 경로에 대한 자세한 설명은.....

https://support.microsoft.com/ko-kr/help/256986/windows-registry-information-for-advanced-users



다음은 시스템에서 사용하는 미리 정의된 키가 나열되어 있습니다. 키 이름의 최대 크기는 255자입니다. 


HKEY_CURRENT_USER

현재 로그온되어 있는 사용자에 대한 구성 정보의 루트가 포함됩니다. 사용자의 폴더, 화면 색상 및 제어판 설정이 여기에 저장됩니다. 이 정보는 사용자 프로필과 관련됩니다. 이 키는 "HKCU"로 간략히 표시되기도 합니다.


HKEY_USERS

컴퓨터에서 로드된 모든 사용자 프로필이 포함됩니다. HKEY_CURRENT_USER는 HKEY_USERS의 하위 키입니다. HKEY_USERS는 "HKU"라고 간략히 표시되기도 합니다.


HKEY_LOCAL_MACHINE

컴퓨터에 특정한 구성 정보가 포함됩니다(임의의 사용자에 해당). 이 키는 "HKLM"으로 간략히 표시되기도 합니다.


HKEY_CLASSES_ROOT

HKEY_LOCAL_MACHINE\Software의 하위 키입니다. 여기에 저장되는 정보는 Windows 탐색기를 사용하여 파일을 열 때 올바른 프로그램이 열리도록 합니다. 이 키는 "HKCR"로 간략히 표시되기도 합니다. 

Windows 2000에서 시작하는 경우 이 정보는 HKEY_LOCAL_MACHINE과 HKEY_CURRENT_USER 키에 저장됩니다. HKEY_LOCAL_MACHINE\Software\Classes 키에는 로컬 컴퓨터의 모든 사용자에게 적용할 수 있는 기본 설정이 포함됩니다.HKEY_CURRENT_USER\Software\Classes 키에는 기본 설정을 무시하고 대화형 사용자에게만 적용되는 설정이 포함됩니다. 

HKEY_CLASSES_ROOT 키는 이 두 소스의 정보를 병합하는 레지스트리 뷰를 제공합니다. HKEY_CLASSES_ROOT는 이전 버전의 Windows용으로 설계된 프로그램에 대해서도 이러한 병합된 뷰를 제공합니다. 

대화형 사용자에 대한 설정을 변경하려면 HKEY_CLASSES_ROOT에서가 아니라 HKEY_CURRENT_USER\Software\Classes에서 변경해야 합니다. 

기본 설정을 변경하려면 HKEY_LOCAL_MACHINE\Software\Classes에서 변경해야 합니다. 

HKEY_CLASSES_ROOT에 있는 키에 값을 쓰는 경우 시스템은 HKEY_LOCAL_MACHINE\Software\Classes에 정보를 저장합니다. 

HKEY_CLASSES_ROOT에 있는 키에 값을 쓰고 해당 키가 이미 HKEY_CURRENT_USER\Software\Classes에 있는 경우 시스템은 HKEY_LOCAL_MACHINE\Software\Classes에 정보를 저장하지 않고 HKEY_CURRENT_USER\Software\Classes에 정보를 저장합니다.


HKEY_CURRENT_CONFIG

시스템 시작 시 로컬 컴퓨터에서 사용하는 하드웨어 프로필에 대한 정보가 포함됩니다.


참고

64비트 버전의 Windows XP, Windows Server 2003 및 Windows Vista에 있는 레지스트리는 32비트 및 64비트 키로 나누어져 있습니다. 32비트 키 대부분은 해당하는 64비트 키와 이름이 같으며 마찬가지로 64비트 키 대부분은 해당하는 32비트 키와 이름이 같습니다. 64비트 버전의 Windows XP, Windows Server 2003 및 Windows Vista에 포함되어 있는 기본 64비트 버전의 레지스트리 편집기는 다음 노드 아래에 32비트 키를 표시합니다.

HKEY_LOCAL_MACHINE\Software\WOW6432Node




이제 본격적으로 우클릭 메뉴가 등록되는 경로(키)들을 살펴보겠습니다.


아래의 모든 레지스트리 경로에는 "Shell"및 "Shellex" 키값이 있습니다. 

"Shell"및 "Shellex" 키에는 파일, 폴더 또는 드라이브를 우클릭할 때 표시되는 옵션들을 가지고 있습니다.


"Shell" 키에는 보통 저희가 사용하는 우클릭메뉴들을 만들며,

"Shellex" 키에는 특수한 상황에 맞는 우클릭메뉴들을 만듭니다.


 "Shellex" 키는 우선 머리속에서 지우셔도 됩니다.

저의 기준이지만 이 부분의 레지는 거의 만지지않아서, 저는 이런 놈이 있구나하고 지나쳤습니다. ^^;


이 포스팅은 경로에 대한 부분만 설명하는 포스팅이라 다른 부분들은 설명하지 않습니다.



1. "파일"을 우클릭하였을 때 경로


HKEY_CLASSES_ROOT\*\shell\ 또는

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\


* 하위 Shell 키에 만드시면 됩니다.

개인적으로 저는 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell 키를 주로 사용합니다.



2. "폴더 / 드라이브 / 바탕화면의 "내 PC" / 라이브러리 폴더 / 휴지통 / 탐색창의 목록" 등을 

   우클릭하였을 때 경로


HKEY_CLASSES_ROOT\Folder\shell\ 또는

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\



라이브러리 폴더의 경로는 아래 경로입니다.

하지만 윈도우의 라이브러리 들도 폴더의 개념이라 라이브러리와 관련된 우클릭을 추가할 때는

폴더 레지스트리 부분에도 같이 추가를 시켜주어야합니다.


HKEY_CLASSES_ROOT\LibraryFolder\Background\shell\ 또는

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\LibraryFolder\Background\shell\



3. "바탕화면 / 폴더의 빈공간" 등을 우클릭하였을 때 경로


HKEY_CLASSES_ROOT\Directory\Background\shell\ 또는

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\



4. "바탕화면 빈공간" 을 우클릭하였을 때 경로


HKEY_CLASSES_ROOT\DesktopBackground\shell\ 또는

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\shell\


오직 바탕화면에만 적용됩니다.


 

5. "드라이브 아이콘" 을 우클릭하였을 때 경로


HKEY_CLASSES_ROOT\Drive\shell\ 또는

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\


탐색기에서 드라이브 아이콘을 우클릭하면 적용되는 부분입니다.



6. "알 수 없는 상황에 맞는 메뉴" 에 옵션을 추가할 때


HKEY_CLASSES_ROOT\Unknown\shell\ 또는

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Unknown\shell\ 





7. "바탕화면의 내 PC" 을 우클릭하였을 때 경로


HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\ 또는

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\



8. 우클릭 메뉴중에 서브메뉴가 있는 경우


예제와 같이 "SubCommands"="admin;users;app;appl;defender;defenderl;ip;ipl;sp;spl"  서브메뉴 키값이 있는 경우는


각각의 서브 메뉴들은

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\

경로에 있습니다.




9. 나머지 우클릭 메뉴와 관련된 경로 (설치한 프로그램과 관련된 우클릭 / 폴더로 복사, 이동 등등)


HKEY_CLASSES_ROOT\*\shellex\contextmenuhandlers\


HKEY_CLASSES_ROOT\AllFileSystemObjects\shellex\contextmenuhandlers\


HKEY_CLASSES_ROOT\Folder\shellex\contextmenuhandlers\


HKEY_CLASSES_ROOT\Directory\shellex\contextmenuhandlers\


HKEY_CLASSES_ROOT\<ProgID>\shellex\contextmenuhandlers\


HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\


HKEY_CLASSES_ROOT\AllFilesystemObjects\




이 정도로 마무리합니다.

제가 그동안 허접한 우클릭 메뉴들을 만들면서 경험한 레지스트리 경로들입니다.

머리디밀기한 부분이라 잘못된 정보가 있을 수 있으니

지적해 주시면 수정하겠습니다. 꾸~~~~벅


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

 


 

로앤님의 우클릭 메뉴를 추출하기전에

적용된 우클릭들을 살펴보겠습니다.

 

체크가 안된 부분은 윈도우의 기본 우클릭 메뉴이거나, 응용프로그램을 설치했을 때 추가된 메뉴들입니다.

이런 부분도 추출 및 삭제가 가능하지만 이 포스팅에서는 설명하지 않습니다.

 












이제 본격적으로 로앤님의 윈도우에서 우클릭메뉴를 추출하겠습니다.

 

- Windows 키 + R  -> 실행창을 실행

- 레지스트리 편집기 -> 실행창에 "regedit" 입력하여 레지스트리 편집기를 실행

 




이렇게 레지스트리 편집기가 실행된 상태에서

위에 레지지스트리 경로를 참조하여 등록된 우클릭메뉴를 추출하면 됩니다.

 

예를 들어서 설명해 보겠습니다

 

 


"내 PC"에 등록된 우클릭 메뉴 추출

 

"내 PC"의 우클릭 경로는 위에서 설명한 경우처럼

HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\ 또는

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\ 입니다.

 

두 가지의 경로중에 고수님 경로를 보면 일반적으로

HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\ 경로에 저희들이 원하는

우클릭 메뉴가 있습니다.

 

실행된 레지스트리 편집기에

HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\ 경로를 복사한 다음

주소 표시줄에 복사한 경로를 붙여쓰기하면, 바로 저희들이 원하는 경로로 찾아갑니다.

그리고 이 경로를 자주 사용할 경우는 "즐겨찾기"에 등록하면 편하게 사용할 수 있습니다.

 






 

왼쪽 경로 HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\ 하위에

여러가지 레지스트리 키가 보입니다. 레지스트리 키들을 하나하나 선택하면 오른쪽에 해당되는 레지스트리 값을 볼 수 있습니다.

 

이렇게 해당되는 레지스트리 값에서 로앤님의 "내 PC"에 등록된 우클릭 메뉴 이름을 확인하여

레지스트리를 추출하면 됩니다.

 

로앤님의 "내 PC"에 등록된 우클릭메뉴는 위 스샷에서 확인한 것처럼 "관리" 와 "계정 설정" 2개입니다.

이 두가지 메뉴를 레지스트리 편집기 오른쪽 Shell 하위 키를 하나하나 선택하여, 왼쪽의 상세 값에서 "관리와 계정 설정"을 찾습니다.

 

관리 -> "ManageSetting" 

계정 설정 -> "adminSetting" 

 




이렇게 찾은 레지스트리 키를 선택한 다음, 마우스로 우클릭하여 "내보내기" 합니다.

그리고 저장하는 대화상자에서 파일명과 확장자 *****.reg 까지 입력한 다음 저장하면 됩니다.

나머지 셋팅은 기본으로 둡니다.

 

두 가지 중에 "관리" 우클릭 메뉴로 설명하겠습니다.

 





보통의 우클릭 메뉴는 여기까지 과정으로 거의 마무리되는데

로앤님의 "내 PC" "관리 메뉴"에는 서브메뉴가 존재하고 또, 각각의 서브메뉴 실행파일이 따로 있습니다.

 

우선 로앤님의 "내 PC"  "관리 메뉴"에 있는 각각의 서브메뉴 레지스트리를 추출하겠습니다.

 

서브메뉴 레지스트리는 보통 2가지가 방법으로 등록하는데, 로앤님은 "SubCommands" 값으로 추가했습니다.

"SubCommands" 값의 경로는 위에서 설명한 것 처럼

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\ 에 있습니다.

 

이 경로를 찾아가서 각각의 서브메뉴 키를 모두 "내보내기" 하여야 합니다.

 

로앤님의 "SubCommands"는

"SubCommands"="01;02;03;04;05;06;" 이런씩으로 값을 입력했습니다.

즉, 01부터 시작해서 06까지 총 6가지 서브메뉴를 가지고 있는 것입니다.

 

참고로, 로앤님의 서브메뉴처럼 "SubCommands"값에는 6가지가 입력되어있지만

실제 경로에 가보면 서브메뉴가 5가지만 있는 경우가 있습니다.

이런 경우는 나중을 위에 "06"을 미리 입력한 경우이거나, 아니면 06 서브메뉴를 삭제한 경우입니다.

"SubCommands" 값의 경로는 이렇게 서브메뉴 키가 있어야만 우클릭메뉴에서 보여집니다.

왜 06이 없는지 조금 이해가 되죠? 없는데 죽어라 찾으시면 안될 것 같아서 설명합니다. ^^;

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\ 

경로를 찾아가면 하위에 01~05까지의 키가 나옵니다. 이 키가 서브메뉴를 구성하는 레지스트리입니다.

각각의 키를 선택하여 "내보내기"를 합니다.

 





 

다음으로 서브메뉴에 사용된 실행파일들을 복사하겠습니다.

 

보통 우클릭 메뉴는

등록되는 키값과 키값을 처리하는 명령어 부분으로 이루어져 있는데, 

이런 명령어는 윈도우의 기본 파일을 사용하기때문에

파일의 경로와 명령어만 제대로 입력하면 됩니다.

 

로앤님의 우클릭메뉴도 위와 같은 구조로 되어있으나,

명령어에 사용되는 프로그램은 별도로 만드신 것 같습니다.

 

^^; 예제로 설명하려는 우클릭 "관리"메뉴에 있는 서브메뉴 모두가

윈도우의 기본파일로 실행되는 명령어라 "서브 메뉴" 중에 하나인 "admin"를 내보내기하여 이 다음부터 설명합니다. 

혼란스럽게하여 죄송합니다.

 

 

아래 스샷을 보면 admin 서브메뉴의 실행파일은

C:\Windows\Setup\\Kor\Main menu.exe 파일로 실행됩니다.

그래서 실제로 이 우클릭 메뉴가 실행되려면

C:\Windows\Setup\\Kor\ 폴더에 "Main menu.exe" 파일이 있어야 제대로 우클릭 메뉴가 실행됩니다.

 

그리고 스샷에도 설명했지만

레지스트리 파일을 메모장같은 에디터 편집기를 사용하여

경로 부분을 수정할 경우, 꼭 "\\" 로 두개로 입력해서 수정해야합니다.

 

실행파일을 따로 원하는 폴더에 복사합니다.

저는 그냥 로앤님의 실행파일 경로와 같게 복사합니다.

Windows\setup 폴더 전체를 복사하고, setup 폴더의 불필요한 State 폴더는 삭제.....

 





이제 1차 작업이 끝났습니다. ^^;

추출된 레지들과 복사한 파일들을 가지고

사용하는 윈도우에 레지들을 더블클릭하여 등록하고, 파일들도 레지의 경로에 맞게 복사해 주시면 됩니다.

 

 

 

레지스트리의 권한 변경 방법

 

가끔 레지를 등록할 때, 레지 권한 문제때문에 레지를 추가할 수 없다고 에러가 나오는 경우가 있습니다.

윈도우의 레지를 사용자가 잘못 만지면, 윈도우가 에러가 날 수 있어

중요한 레지는 이렇게 사용자가 수정할 수 없게 만들어 놓아 나오는 에러입니다.

 

레지 권한 변경은 수동으로 권한을 변경하여 적용하는 방법과 응용프로그램으로 하는 방법이 있습니다.

수동으로 권한 변경 방법은 과정이 좀 복잡하니 여기서는 설명하지 않습니다.

 

 

수동으로 레지권한을 변경하는 방법은......

http://hwsecter.tistory.com/420

http://oldnew.tistory.com/121

 

저도 예전에 공부했던 블로그이니 나중에 꼭 숙지를 하시기바랍니다.

응용프로그램으로 권한을 변경했는데도 등록이 안되는 레지는 수동으로 레지 권한을 변경해야만

등록되는 경우가 있어서입니다.

 

 

댓글에 레지권한과 연관된 질문이 있어서 미리 답변했습니다.

그래서 이 부분은 답변한 부분을 그대로 가지고 오겠습니다.

 

질문하신 윈포의 에클레시아님께 감사의 인사드립니다. 꾸~~~벅

 

아래와 같이 레지를 등록할 때 에러메시지가 나올 경우

레지의 권한을 변경하여 등록하면 됩니다.

 


레지 권한을 변경할 수 있는 프로그램은 여러가지가 있는데

그 중에 쉽게 사용할 수 있는 RegOwnershipEx 프로그램으로 설명합니다. 

 

프로그램은 http://winaero.com/download.php?view.57 여기로 가셔서 다운 받으시고

등록이 안되는 레지를 메모장으로 열고, 레지 경로를 복사한 다음 아래 스샷을 따라하시면 됩니다.

 

사용하시는 윈도우가 윈도우 10이면

"Windows 8 and above" 폴더에 있는 놈으로 실행을.....

 


RegOwnershipEx_v1.0.0.2.zip


 






 

추출한 레지파일들 합치기

 

추출한 레지파일이 여러개일 때는 관리가 힘들고 또 연관된 레지파일들을 찾기가 쉽지않으니

이러한 레지파일들을 하나의 레지파일로 만들어 관리하면 편리합니다.

 

추출한 여러가지 레지파일 중에 저장할 레지파일을 메모장으로 오픈합니다.

로앤님의 레지중에 "관리.reg" 파일을 가지고 설명합니다.

 

관리 우클릭메뉴가 서브메뉴를 가지고 있는 경우라

나중에 레지를 수정하거나 활용할 때 쉽게 알아보기 위해서입니다.

 

일반적으로 레지를 합칠 때는 윈도우의 레지스트리 디렉토리 구조와 같게 정리합니다.

 

나머지는 스샷으로....









^^; 레지스트리 추출에 대해 그 동안 경험을 어느 정도 설명한 것 같습니다.

 

설명이 안된 레지는 레지 경로들과 우클릭 메뉴에 등록된 레지이름을 가지고

위에 설명을 보고 따라하시면 됩니다.

일부러 제일 복잡한 레지로 예를 들어서 한 부분이기때문에

이외의 레지는 아주 특별한 경우입니다. 

 

마지막으로 PE에 사용된 우클릭메뉴를 추출할 경우는

******.Wim 파일을 마운트하여 하이브 작업으로 레지를 추출해야 합니다.

하이브 작업에 대한 부분은 전에 설명을 한 부분이 있으니 참조하시고

또 마운트가 어려운 분은 PE를 실행해서 추출하시면 됩니다.

 

레지스트리 하이브 로드 또는 언로드(Load or Unload Registry Hives) 작업

 

PE같은 경우는 하이브 작업이든 아니든, 모두 레지의 아이콘 경로와 실행파일들의 경로를

수정하는 경우가 많으니, 꼭 추출한 레지를 메모장같은 텍스트 편집기로 열어서 확인하시기 바랍니다.

경로 수정은 반드시 경로를 "\\" 두개로.......

 

 

오늘도 역시 오타장렬입니다. 죄송합니다.ㅠㅠ

읽어 보시느라 고생이 많았습니다. 꾸~~~~벅




고수님 윈도우에서 우클릭 메뉴 추출하기 - 응용편

http://oldnew.tistory.com/339


우클릭 메뉴(Context Menu) 레지스트리 경로

http://oldnew.tistory.com/322


나만의 우클릭 메뉴 만들기 ① - Context Menu Tuner_v3.0.0.2 기초편

http://oldnew.tistory.com/310


레지스트리 하이브 로드 또는 언로드(Load or Unload Registry Hives) 작업

http://oldnew.tistory.com/325




728x90

 

 

 

댓글