연결 프로그램 Open With

1.JPG
2.JPG
3.JPG
4.JPG

위와 같이 마우스 을 통해 연결 프로그램을 지정하면 레지스트리에 다음과 같이 등록됩니다.

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList]
"a"="notepad++.exe"
"b"="UEStudio.exe"
"c"="Notepad2+x64.exe"
"MRUList"="cba"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithProgids]

[HKEY_CLASSES_ROOT\Applications\notepad++.exe]

[HKEY_CLASSES_ROOT\Applications\UEStudio.exe]

[HKEY_CLASSES_ROOT\Applications\Notepad2+x64.exe]

추가로 " 이 종류의 파일을 열 때 항상 선택된 프로그램 사용(A)" 의 체크박스에 체크하게 되면 다음의 레지스트리 값이 추가됩니다.

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice]
"Progid"="Applications\\notepad++.exe"

일반적으로 어떤 파일을 마우스 열었을 때 기본적으로 참조되는 값은

[HKEY_CLASSES_ROOT\.확장자] 의 키에 등록되어 있는 프로그램 ID( ProgID)를 참조하여 파일을 엽니다.

.txt 파일을 예로 든다면,

[HKEY_CLASSES_ROOT\.txt]

기본값 = txtfile

[HKEY_CLASSES_ROOT\ttxtfile]

shell

open

command

기본값 = %SystemRoot%\system32\NOTEPAD.EXE %1

.txt 에 관련된 응용프로그램을 설치하게 되면 [HKEY_CLASSES_ROOT\.txt] 에 등록된 textfile( ProgID)을 해당 응용프로그램의 고유한 프로그램 ID 값으로 바꾸게 됩니다. .txt 파일 해당 응용프로그램으로 열리게 됩니다.

그런데 이 값보다 먼저 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice] 에 등록된 값을 참조하여 파을을 엽니다.

5.JPG

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithProgids] 에 등록된 txtfile 의 프로그램인 NOTEPAD.EXE 가 기본값으로 선택되어져 있고 기본 '권장하는 프로그램'인 wordpad.exe 와 나머지 사용자가 추가한 프로그램들이 나타나 있습니다.

'권장하는 프로그램'에서 사용자가 추가한 프로그램들은

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList]
"a"="notepad++.exe"
"b"="UEStudio.exe"
"c"="Notepad2+x64.exe"
"MRUList"="cba"

에서 MRUList 에서 해당 값을 삭제해서 나타나는 것을 제어할 수 있습니다. 즉 UEStudio.exe 를 표시되지 않게하려면 MRUList 의 값데이타 cba 를 ca로 수정하면 UEStudio.exe 가 표시되지 않습니다.

6.JPG
7.JPG

MRUList 에서 값을 삭제해서 '권장하는 프로그램'에 표시가 되지 않게하더라도 '기타 프로그램'에는 표시가 됩니다.

'기타 프로그램'은 [HKEY_CLASSES_ROOT\Applications] 의 키를 참조하여 나타납니다.

표시가 되지 않게 하려면 "NoOpenWith" 값을 추가해 줍니다.

[HKEY_CLASSES_ROOT\Applications\ 해당 응용프로그램]

"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\notepad++.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\Notepad2+x64.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\UEStudio.exe]
"NoOpenWith"=""

8.JPG

[HKEY_CLASSES_ROOT\Applications\ehshell.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\iexplore.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\notepad.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\wmplayer.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\wordpad.exe]
"NoOpenWith"=""

9.JPG

'권장하는 프로그램'에 나타나 있는 Windows 사진뷰어와 그림판은 다음의 값을 추가한다 하더라도 표시되지 않게 할 수 없습니다.

[HKEY_CLASSES_ROOT\Applications\photoviewer.dll]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\mspaint.exe]
"NoOpenWith"=""

"NoOpenWith" 값은 '기타 프로그램'과 사용자가 추가한 프로그램만 적용이 됩니다.

'권장하는 프로그램'의 그림판을 표시되지 않게하려면


[HKEY_CLASSES_ROOT\PBrush\shell\edit\command]
@=-

[HKEY_CLASSES_ROOT\Applications\mspaint.exe\shell\edit\command]
@=-

위 두가지 경로의 command 값을 삭제해야 됩니다.( 이 값을 삭제하더라도 그림판을 사용하는데는 지장이 없습니다.)

10.JPG

.txt 파일 연결 프로그램의 wordpad.exe 를 표시되지 않게 하려면

[HKEY_CLASSES_ROOT\textfile\shell\open\command]
@=-

[HKEY_CLASSES_ROOT\Applications\wordpad.exe\shell\open\command]
@=-

위 두가지 경로의 command 값을 삭제합니다.

11.JPG

기본 ProgID( txtfile) 로 등록된 프로그램인 메모장을 '권장하는 프로그램'에서 표시되지 않게 하려면

[HKEY_CLASSES_ROOT\txtfile\shell\open\command]
@=-

[HKEY_CLASSES_ROOT\Applications\notepad.exe]
"NoOpenWith"=""

ProgID 의 shell\open 키의 command 값을 삭제하고 [HKEY_CLASSES_ROOT\Applications\해당 응용프로그램] 키 에 "NoOpenWith" 값을 추가하면 됩니다.

12.JPG
13.JPG

기본 ProgID 의 open command 키가 삭제되었기 때문에 에러메세지가 뜹니다. ( 위에서 얘기한 'UserChoice' 값이 등록되지 않았을 경우에 한해서)

메뉴- 연결 프로그램은 레지스트리에 다음과 같이 등록되어 있습니다. 연결 프로그램 메뉴 자체를 사용 안하려면 이 중에서 하나를 삭제합니다.( CLSID 에 등록된 키는 권한을 획득해야 수정할 수 있습니다.)

[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Open With]
@="{09799AFB-AD67-11d1-ABCD-00C04FC30936}"

[HKEY_CLASSES_ROOT\CLSID\{09799AFB-AD67-11d1-ABCD-00C04FC30936}\InProcServer32]

기본값 = %SystemRoot%\system32\shell32.dll

시스템에 등록이 안된 확장자를 열었을 때에도 '연결 프로그램' 창이 열립니다.

등록이 안되었다는 말은

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice]

[HKEY_CLASSES_ROOT\.확장자]

의 경로 모두에 값이 제대로 등록되지 않았다는 말과 동일합니다. 위 경로 한군데라도 값이 제대로 등록되어 있으면 해당 응용프로그램이 열립니다.

14.JPG
15.JPG
16.JPG

등록되지 않은 확장자에 대한 열기 메뉴는 다음의 레지스트리가 사용됩니다.

[HKEY_CLASSES_ROOT\Unknown]

shell

openas

command

기본값 = %SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\shell32.dll,OpenAs_RunDLL %1

'연결 프로그램'의 명령줄을 'UnKnown' 확장자의 명령줄로 유추해 볼 수 있습니다.^^

참고로, 등록되지 않은 확장자에 대한 위와 같은 '온라인에서 프로그램 검색' 팜업창을 표시하지 않게하려면 다음 값을 등록해 줍니다.

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoInternetOpenWith"=dword:00000001

연결 프로그램에 관련된 메뉴를 만들어 봤습니다.

1. OpenWithListClean.reg

작동하는 방식은 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.확장자] 키를 삭제.

[HKEY_CLASSES_ROOT\확장자_auto_file] 키 삭제.

[HKEY_CLASSES_ROOT\Applications] 에서 "NoOpenWith" 값이 있는 키를 제외하고 그 나머지에서 순정 윈도우의 기본적으로 등록되어 있는 키를 제외한 나머지를 삭제합니다.

위 세가지 키는 '연결 프로그램'을 통해서 자동적으로 다시 써지는

[HKEY_CLASSES_ROOT\확장자_auto_file] 키는 등록되지 않는 확장자를 '연결 프로그램'에서 응용프로그램을 선택했을 때 생성됩니다.

모든 파일( *) 에 등록되며 Shift 키를 누른체 했을 때 보여집니다. 메뉴명은

2. OpenWithExe.reg

.exe 파일 에 등록되며, 확장자를 선택하면

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.확장자\UserChoice]
[HKEY_CLASSES_ROOT\Applications\해당 응용프로그램]

에 레지스트리 값을 추가합니다. "NoOpenWith" 값이 같이 추가되기 때문에 '연결 프로그램' 목록에 나타나지 않습니다.

OpenWith.zip

1.JPG
2.JPG
3.JPG
4.JPG

위와 같이 마우스 을 통해 연결 프로그램을 지정하면 레지스트리에 다음과 같이 등록됩니다.

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList]
"a"="notepad++.exe"
"b"="UEStudio.exe"
"c"="Notepad2+x64.exe"
"MRUList"="cba"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithProgids]

[HKEY_CLASSES_ROOT\Applications\notepad++.exe]

[HKEY_CLASSES_ROOT\Applications\UEStudio.exe]

[HKEY_CLASSES_ROOT\Applications\Notepad2+x64.exe]

추가로 " 이 종류의 파일을 열 때 항상 선택된 프로그램 사용(A)" 의 체크박스에 체크하게 되면 다음의 레지스트리 값이 추가됩니다.

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice]
"Progid"="Applications\\notepad++.exe"

일반적으로 어떤 파일을 마우스 열었을 때 기본적으로 참조되는 값은

[HKEY_CLASSES_ROOT\.확장자] 의 키에 등록되어 있는 프로그램 ID( ProgID)를 참조하여 파일을 엽니다.

.txt 파일을 예로 든다면,

[HKEY_CLASSES_ROOT\.txt]

기본값 = txtfile

[HKEY_CLASSES_ROOT\ttxtfile]

shell

open

command

기본값 = %SystemRoot%\system32\NOTEPAD.EXE %1

.txt 에 관련된 응용프로그램을 설치하게 되면 [HKEY_CLASSES_ROOT\.txt] 에 등록된 textfile( ProgID)을 해당 응용프로그램의 고유한 프로그램 ID 값으로 바꾸게 됩니다. .txt 파일 해당 응용프로그램으로 열리게 됩니다.

그런데 이 값보다 먼저 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice] 에 등록된 값을 참조하여 파을을 엽니다.

5.JPG

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithProgids] 에 등록된 txtfile 의 프로그램인 NOTEPAD.EXE 가 기본값으로 선택되어져 있고 기본 '권장하는 프로그램'인 wordpad.exe 와 나머지 사용자가 추가한 프로그램들이 나타나 있습니다.

'권장하는 프로그램'에서 사용자가 추가한 프로그램들은

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList]
"a"="notepad++.exe"
"b"="UEStudio.exe"
"c"="Notepad2+x64.exe"
"MRUList"="cba"

에서 MRUList 에서 해당 값을 삭제해서 나타나는 것을 제어할 수 있습니다. 즉 UEStudio.exe 를 표시되지 않게하려면 MRUList 의 값데이타 cba 를 ca로 수정하면 UEStudio.exe 가 표시되지 않습니다.

6.JPG
7.JPG

MRUList 에서 값을 삭제해서 '권장하는 프로그램'에 표시가 되지 않게하더라도 '기타 프로그램'에는 표시가 됩니다.

'기타 프로그램'은 [HKEY_CLASSES_ROOT\Applications] 의 키를 참조하여 나타납니다.

표시가 되지 않게 하려면 "NoOpenWith" 값을 추가해 줍니다.

[HKEY_CLASSES_ROOT\Applications\ 해당 응용프로그램]

"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\notepad++.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\Notepad2+x64.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\UEStudio.exe]
"NoOpenWith"=""

8.JPG

[HKEY_CLASSES_ROOT\Applications\ehshell.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\iexplore.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\notepad.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\wmplayer.exe]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\wordpad.exe]
"NoOpenWith"=""

9.JPG

'권장하는 프로그램'에 나타나 있는 Windows 사진뷰어와 그림판은 다음의 값을 추가한다 하더라도 표시되지 않게 할 수 없습니다.

[HKEY_CLASSES_ROOT\Applications\photoviewer.dll]
"NoOpenWith"=""

[HKEY_CLASSES_ROOT\Applications\mspaint.exe]
"NoOpenWith"=""

"NoOpenWith" 값은 '기타 프로그램'과 사용자가 추가한 프로그램만 적용이 됩니다.

'권장하는 프로그램'의 그림판을 표시되지 않게하려면


[HKEY_CLASSES_ROOT\PBrush\shell\edit\command]
@=-

[HKEY_CLASSES_ROOT\Applications\mspaint.exe\shell\edit\command]
@=-

위 두가지 경로의 command 값을 삭제해야 됩니다.( 이 값을 삭제하더라도 그림판을 사용하는데는 지장이 없습니다.)

10.JPG

.txt 파일 연결 프로그램의 wordpad.exe 를 표시되지 않게 하려면

[HKEY_CLASSES_ROOT\textfile\shell\open\command]
@=-

[HKEY_CLASSES_ROOT\Applications\wordpad.exe\shell\open\command]
@=-

위 두가지 경로의 command 값을 삭제합니다.

11.JPG

기본 ProgID( txtfile) 로 등록된 프로그램인 메모장을 '권장하는 프로그램'에서 표시되지 않게 하려면

[HKEY_CLASSES_ROOT\txtfile\shell\open\command]
@=-

[HKEY_CLASSES_ROOT\Applications\notepad.exe]
"NoOpenWith"=""

ProgID 의 shell\open 키의 command 값을 삭제하고 [HKEY_CLASSES_ROOT\Applications\해당 응용프로그램] 키 에 "NoOpenWith" 값을 추가하면 됩니다.

12.JPG
13.JPG

기본 ProgID 의 open command 키가 삭제되었기 때문에 에러메세지가 뜹니다. ( 위에서 얘기한 'UserChoice' 값이 등록되지 않았을 경우에 한해서)

메뉴- 연결 프로그램은 레지스트리에 다음과 같이 등록되어 있습니다. 연결 프로그램 메뉴 자체를 사용 안하려면 이 중에서 하나를 삭제합니다.( CLSID 에 등록된 키는 권한을 획득해야 수정할 수 있습니다.)

[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Open With]
@="{09799AFB-AD67-11d1-ABCD-00C04FC30936}"

[HKEY_CLASSES_ROOT\CLSID\{09799AFB-AD67-11d1-ABCD-00C04FC30936}\InProcServer32]

기본값 = %SystemRoot%\system32\shell32.dll

시스템에 등록이 안된 확장자를 열었을 때에도 '연결 프로그램' 창이 열립니다.

등록이 안되었다는 말은

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice]

[HKEY_CLASSES_ROOT\.확장자]

의 경로 모두에 값이 제대로 등록되지 않았다는 말과 동일합니다. 위 경로 한군데라도 값이 제대로 등록되어 있으면 해당 응용프로그램이 열립니다.

14.JPG
15.JPG
16.JPG

등록되지 않은 확장자에 대한 열기 메뉴는 다음의 레지스트리가 사용됩니다.

[HKEY_CLASSES_ROOT\Unknown]

shell

openas

command

기본값 = %SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\shell32.dll,OpenAs_RunDLL %1

'연결 프로그램'의 명령줄을 'UnKnown' 확장자의 명령줄로 유추해 볼 수 있습니다.^^

참고로, 등록되지 않은 확장자에 대한 위와 같은 '온라인에서 프로그램 검색' 팜업창을 표시하지 않게하려면 다음 값을 등록해 줍니다.

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoInternetOpenWith"=dword:00000001

연결 프로그램에 관련된 메뉴를 만들어 봤습니다.

1. OpenWithListClean.reg

작동하는 방식은 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.확장자] 키를 삭제.

[HKEY_CLASSES_ROOT\확장자_auto_file] 키 삭제.

[HKEY_CLASSES_ROOT\Applications] 에서 "NoOpenWith" 값이 있는 키를 제외하고 그 나머지에서 순정 윈도우의 기본적으로 등록되어 있는 키를 제외한 나머지를 삭제합니다.

위 세가지 키는 '연결 프로그램'을 통해서 자동적으로 다시 써지는

[HKEY_CLASSES_ROOT\확장자_auto_file] 키는 등록되지 않는 확장자를 '연결 프로그램'에서 응용프로그램을 선택했을 때 생성됩니다.

모든 파일( *) 에 등록되며 Shift 키를 누른체 했을 때 보여집니다. 메뉴명은

2. OpenWithExe.reg

.exe 파일 에 등록되며, 확장자를 선택하면

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.확장자\UserChoice]
[HKEY_CLASSES_ROOT\Applications\해당 응용프로그램]

에 레지스트리 값을 추가합니다. "NoOpenWith" 값이 같이 추가되기 때문에 '연결 프로그램' 목록에 나타나지 않습니다.

OpenWith.zip

출처 : http://windowsforum.kr/2556266

[레벨:0]
eunnano님


[OGTITLE]연결 프로그램 Open With[/OGTITLE]

이 글을 공유하기

댓글(0)

Designed by 테크윈