애플리케이션 등록
이 항목에서는 애플리케이션이 특정 시나리오를 사용하도록 설정하는 데 필요한 자신에 대한 정보를 노출하는 방법에 대해 설명합니다. 여기에는 애플리케이션을 찾는 데 필요한 정보, 애플리케이션이 지원하는 동사 및 애플리케이션이 처리할 수 있는 파일 형식이 포함됩니다.
이 항목은 다음과 같이 구성됩니다.
참고
애플리케이션은 SPAD(프로그램 액세스 및 컴퓨터 기본값 설정) 및 SYDP(기본 프로그램 설정) 제어판 애플리케이션에도 등록할 수 있습니다. SPAD 및 SYDP 애플리케이션 등록에 대한 자세한 내용은 파일 연결 및 기본 프로그램에 대한 지침 및SPAD(프로그램 액세스 및 컴퓨터 기본값) 설정을 참조하세요.
애플리케이션 실행 파일 찾기
ShellExecuteEx 함수가 lpFile 매개 변수에 있는 실행 파일의 이름으로 호출되면 함수가 파일을 찾는 여러 위치가 있습니다. 앱 경로 레지스트리 하위 키에 애플리케이션을 등록하는 것이 좋습니다. 이렇게 하면 애플리케이션이 시스템 PATH 환경 변수를 수정할 필요가 없습니다.
파일은 다음 위치에서 찾습니다.
- 현재 작업 디렉터리.
- Windows 디렉터리만(하위 디렉터리가 검색되지 않음)
- Windows\System32 디렉터리입니다.
- PATH 환경 변수에 나열된 디렉터리입니다.
- 권장: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\앱 경로
애플리케이션 등록
앱 경로 및애플리케이션 레지스트리 하위 키는 모두 애플리케이션을 대신하여 시스템의 동작을 등록하고 제어하는 데 사용됩니다. 앱 경로 하위 키가 기본 설정 위치입니다.
앱 경로 하위 키 사용
Windows 7 이상에서는 컴퓨터가 아닌 사용자별로 애플리케이션을 설치하는 것이 좋습니다. 사용자별로 설치된 애플리케이션은 HKEY_CURRENT_USER\소프트웨어\Microsoft\Windows\CurrentVersion\앱 경로에 등록할 수 있습니다. 컴퓨터의 모든 사용자에 대해 설치된 애플리케이션은 HKEY_LOCAL_MACHINE\소프트웨어\Microsoft\Windows\CurrentVersion\앱 경로에 등록할 수 있습니다.
앱 경로 아래에 있는 항목은 주로 다음 용도로 사용됩니다.
- 애플리케이션의 실행 파일 이름을 해당 파일의 정규화된 경로에 매핑합니다.
- 프로세스별로 애플리케이션별로 PATH 환경 변수에 대한 미리 보류 중인 정보입니다.
App Paths 하위 키의 이름이 파일 이름과 일치하는 경우 셸은 다음 두 가지 작업을 수행합니다.
- (기본값) 항목은 파일의 정규화된 경로로 사용됩니다.
- 해당 하위 키에 대한 경로 항목은 해당 프로세스의 PATH 환경 변수에 미리 보류되어 있습니다. 필요하지 않은 경우 경로 값을 생략할 수 있습니다.
알아야 할 잠재적 문제는 다음과 같습니다.
- 셸은 명령줄의 길이를 MAX_PATH * 2자로 제한합니다. 레지스트리 항목으로 나열된 파일이 많거나 경로가 긴 경우 명령줄이 잘리면 목록의 뒷부분에 있는 파일 이름이 손실될 수 있습니다.
- 일부 애플리케이션은 명령줄에서 여러 파일 이름을 허용하지 않습니다.
- 여러 파일 이름을 허용하는 일부 애플리케이션은 셸에서 제공하는 형식을 인식하지 않습니다. Shell은 매개 변수 목록을 따옴표 붙은 문자열로 제공하지만 일부 애플리케이션에는 따옴표가 없는 문자열이 필요할 수 있습니다.
- 끌 수 있는 모든 항목이 파일 시스템의 일부인 것은 아닙니다. 예를 들어 프린터입니다. 이러한 항목에는 표준 Win32 경로가 없으므로 ShellExecuteEx에 의미 있는 lpParameters 값을 제공할 방법이 없습니다.
DropTarget 항목을 사용하면 CFSTR_SHELLIDLIST(긴 파일 목록의 경우) 및CFSTR_FILECONTENTS(비 파일 시스템 개체의 경우)를 비롯한 모든 클립보드 형식에 대한 액세스를 제공하여 이러한 잠재적인 문제를 방지할 수 있습니다.
앱 경로 하위 키를 사용하여 애플리케이션의 동작을 등록하고 제어하려면 다음을 수행합니다.
다음 레지스트리 항목과 같이 실행 파일과 이름이 같은 하위 키를 App Paths 하위 키에 추가합니다.
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER SOFTWARE Microsoft Windows CurrentVersion App Paths file.exe (Default) DontUseDesktopChangeRouter DropTarget Path UseUrl
앱 경로 하위 키 항목에 대한 자세한 내용은 다음 표를 참조하세요.
레지스트리 항목 | 세부 정보 |
---|---|
(기본값) | 애플리케이션에 대한 정규화된 경로입니다. (기본값) 항목에 제공된 애플리케이션 이름은 .exe 확장명을 사용하거나 사용하지 않고 지정할 수 있습니다. 필요한 경우 ShellExecuteEx 함수는 앱 경로 하위 키를 검색할 때 확장을 추가합니다. 항목은 REG_SZ 형식입니다. |
DontUseDesktopChangeRouter | Windows Explorer 프로세스를 디버깅할 때 파일 대화 상자 교착 상태를 방지하려면 디버거 애플리케이션이 필수입니다. 그러나 DontUseDesktopChangeRouter 항목을 설정하면 변경 알림을 약간 덜 효율적으로 처리할 수 있습니다. 항목은 REG_DWORD 형식이고 값은 0x1. |
DropTarget | CLSID(클래스 식별자)입니다. DropTarget 항목에는 IDropTarget을 구현하는 개체의 CLSID(일반적으로 In-process 서버가 아닌 로컬 서버)가 포함됩니다. 기본적으로 놓기 대상이 실행 파일이고 DropTarget 값이 제공되지 않으면 Shell은 삭제된 파일 목록을 명령줄 매개 변수로 변환하고 lpParameters를 통해 ShellExecuteEx에 전달합니다. |
경로 |
ShellExecuteEx를 호출하여 애플리케이션을 시작할 때 PATH 환경 변수에 추가할 문자열(세미콜론으로 구분된 디렉터리 목록 형식)을 제공합니다. .exe 대한 정규화된 경로입니다. 그것은 REG_SZ.
Windows 7 이상에서는 형식을 REG_EXPAND_SZ 수 있으며 일반적으로 %ProgramFiles%REG_EXPAND_SZ.
참고: 애플리케이션은 셸에서 인식되는 (기본값), 경로 및 DropTarget 항목 외에도 실행 파일의 앱 경로 하위 키에 사용자 지정 값을 추가할 수 있습니다. 애플리케이션 개발자는 전역 시스템 경로를 추가하는 대신 앱 경로 하위 키를 사용하여 애플리케이션별 경로를 제공하는 것이 좋습니다. |
SupportedProtocols | 지정된 키에 대한 URL 프로토콜 구성표를 포함하는 문자열을 만듭니다. 여기에는 지원되는 체계를 나타내는 여러 레지스트리 값이 포함될 수 있습니다. 이 문자열은 scheme1:scheme2 형식을 따릅니다. 이 목록이 비어 있지 않으면 파일: 가 문자열에 추가됩니다. 이 프로토콜은 SupportedProtocols 가 정의된 경우 암시적으로 지원됩니다. |
UseUrl | 애플리케이션이 명령줄에서 파일 이름 대신 URL을 수락할 수 있음을 나타냅니다. 웹 브라우저 및 미디어 플레이어와 같이 인터넷에서 직접 문서를 열 수 있는 애플리케이션은 이 항목을 설정해야 합니다. ShellExecuteEx 함수가 애플리케이션을 시작하고 UseUrl=1 값이 설정되지 않은 경우 ShellExecuteEx는 문서를 로컬 파일에 다운로드하고 로컬 복사본에서 처리기를 호출합니다. 예를 들어 애플리케이션에 이 항목 집합이 있고 사용자가 웹 서버에 저장된 파일을 마우스 오른쪽 단추로 클릭하면 Open 동사를 사용할 수 있습니다. 그렇지 않은 경우 사용자는 파일을 다운로드하고 로컬 복사본을 열어야 합니다. UseUrl 항목은 REG_DWORD 형식이며 값은 0x1. Windows Vista 및 이전 버전에서 이 항목은 ShellExecuteEx를 통해 호출될 때 로컬 파일 이름과 함께 URL을 애플리케이션에 전달해야 함을 나타냅니다. Windows 7에서는 애플리케이션이 캐시 파일 이름도 제공하지 않고도 전달되는 http 또는 https URL을 이해할 수 있음을 나타냅니다. 이 레지스트리 키는 SupportedProtocols 키와 연결됩니다. |
애플리케이션 하위 키 사용
HKEY_CLASSES_ROOTApplications\ApplicationName.exe\ 하위 키 아래에 레지스트리 항목을 포함하면 애플리케이션은 다음 표에 표시된 애플리케이션 관련 정보를 제공할 수 있습니다.
레지스트리 항목 | 설명 |
---|---|
shell\verb | OpenWith에서 애플리케이션을 호출하기 위한 동사 메서드를 제공합니다. 여기에 지정된 동사 정의가 없으면 시스템은 애플리케이션이 CreateProcess를 지원한다고 가정하고 명령줄에 파일 이름을 전달합니다. 이 기능은 DropTarget, ExecuteCommand 및 DDE(동적 데이터 교환)를 비롯한 모든 동사 메서드에 적용됩니다. |
DefaultIcon | 애플리케이션이 .exe 파일에 저장된 첫 번째 아이콘 대신 애플리케이션을 나타내는 특정 아이콘을 제공할 수 있도록 합니다. |
FriendlyAppName | 지역화할 수 없는 버전 정보만 표시되는 대신 애플리케이션에 대해 표시할 지역화 가능한 이름을 가져오는 방법을 제공합니다. 연결 쿼리 ASSOCSTR 은 이 레지스트리 항목 값을 읽고 버전 정보에서 FileDescription 이름을 사용하도록 대체합니다. 해당 이름이 없으면 연결 쿼리는 기본적으로 파일의 표시 이름으로 설정됩니다. 애플리케이션은 ASSOCSTR_FRIENDLYAPPNAME 사용하여 이 정보를 검색하여 적절한 동작을 가져와야 합니다. |
SupportedTypes | 애플리케이션에서 지원하는 파일 형식을 나열합니다. 이렇게 하면 애플리케이션이 열기 대화 상자의 계단식 메뉴에 나열될 수 있습니다. |
NoOpenWith | 이 파일 형식을 열기 위해 애플리케이션이 지정되지 않음을 나타냅니다. 파일 형식별로 애플리케이션에 대해 OpenWithProgIDs 하위 키가 설정되어 있고 ProgID 하위 키 자체에 NoOpenWith 항목도 없는 경우 해당 애플리케이션은 NoOpenWith 항목을 지정한 경우에도 권장되거나 사용 가능한 애플리케이션 목록에 표시됩니다. 자세한 내용은 대화 상자에서 애플리케이션을 포함하는 방법 및 대화 상자에서애플리케이션을 제외하는 방법을 참조하세요. |
IsHostApp | 프로세스가 Rundll32.exe 또는 Dllhost.exe 같은 호스트 프로세스이며 시작 메뉴 고정 또는 MFU(가장 자주 사용되는) 목록에 포함되는 것으로 간주해서는 안 됨을 나타냅니다. null이 아닌 인수 목록 또는 명시적 애플리케이션 사용자 모델 ID(AppUserModelIDs)가 포함된 바로 가기를 사용하여 시작하면 프로세스를 고정할 수 있습니다(바로 가기). 이러한 바로 가기는 MFU 목록에 포함할 후보입니다. |
NoStartPage | 애플리케이션 실행 파일과 바로 가기를 시작 메뉴와 MFU 목록의 고정 또는 포함에서 제외해야 했음을 나타냅니다. 이 항목은 일반적으로 시스템 도구, 설치 관리자 및 제거자 및 추가 정보 파일을 제외하는 데 사용됩니다. |
UseExecutableForTaskbarGroupIcon | 이 애플리케이션에 대해 고정 가능한 바로 가기가 없고 처음 발견된 창의 아이콘 대신 작업 표시줄에서 이 실행 파일의 기본 아이콘을 사용하도록 합니다. |
TaskbarGroupIcon | 작업 표시줄 아이콘을 재정의하는 데 사용되는 아이콘을 지정합니다. 창 아이콘은 일반적으로 작업 표시줄에 사용됩니다. TaskbarGroupIcon 항목을 설정하면 시스템에서 애플리케이션에 대한 .exe 아이콘을 대신 사용합니다. |
예제
HKEY_CLASSES_ROOT 애플리케이션ApplicationName.exe\ 하위 키를 통한애플리케이션\ 등록의 몇 가지 예는 다음과 같습니다. 모든 레지스트리 항목 값은 REG_EXPAND_SZ 형식인 DefaultIcon 을 제외하고 REG_SZ 형식입니다.
HKEY_CLASSES_ROOT
Applications
wordpad.exe
FriendlyAppName = @%SystemRoot%\System32\shell32.dll,-22069
HKEY_CLASSES_ROOT
Applications
wmplayer.exe
SupportedTypes
.3gp2
HKEY_CLASSES_ROOT
Applications
wmplayer.exe
DefaultIcon
(Default) = %SystemRoot%\system32\wmploc.dll,-730
HKEY_CLASSES_ROOT
Applications
WScript.exe
NoOpenWith
HKEY_CLASSES_ROOT
Applications
photoviewer.dll
shell
open
DropTarget
Clsid = {FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}
HKEY_CLASSES_ROOT
Applications
mspaint.exe
SupportedTypes
.bmp
.dib
.rle
.jpg
.jpeg
.jpe
.jfif
.gif
.emf
.wmf
.tif
.tiff
.png
.ico
동사 및 기타 파일 연결 정보 등록
HKEY_CLASSES_ROOT\SystemFileAssociations에 등록된 하위 키를 사용하면 셸이 파일 형식에 대한 특성의 기본 동작을 정의하고 공유 파일 연결을 사용하도록 설정할 수 있습니다. 사용자가 파일 형식에 대한 기본 애플리케이션을 변경하는 경우 새 기본 애플리케이션의 ProgID는 동사 및 기타 연결 정보를 제공하는 데 우선 순위가 있습니다. 이 우선 순위는 연결 배열의 첫 번째 항목이기 때문입니다. 기본 프로그램이 변경되면 이전 ProgID의 정보를 더 이상 사용할 수 없습니다.
기본 프로그램 변경의 결과를 사전에 처리하기 위해 HKEY_CLASSES_ROOT\SystemFileAssociations 를 사용하여 동사 및 기타 연결 정보를 등록할 수 있습니다. 연결 배열의 ProgID 다음에 위치하기 때문에 이러한 등록은 우선 순위가 낮습니다. 이러한 SystemFileAssociationsregistrations는 사용자가 기본 프로그램을 변경하는 경우에도 안정적이며 특정 파일 형식에 항상 사용할 수 있는 보조 동사를 등록할 수 있는 위치를 제공합니다. 레지스트리 예제는 이 항목의 뒷부분에 있는 인식된 형식 등록 을 참조하세요.
다음 레지스트리 예제에서는 사용자가 제어판 기본 프로그램 항목을 실행하여 .mp3 파일의 기본값을 App2ProgID로 변경할 때 발생하는 작업을 보여 줍니다. 기본값을 변경한 후에는 Verb1을 더 이상 사용할 수 없으며 Verb2가 기본값이 됩니다.
HKEY_CLASSES_ROOT
.mp3
(Default) = App1ProgID
HKEY_CLASSES_ROOT
App1ProgID
shell
Verb1
HKEY_CLASSES_ROOT
App2ProgID
shell
Verb2
인식된 형식 등록
인식된 형식에 대한 레지스트리 값은 HKEY_CLASSES_ROOT\SystemFileAssociations 레지스트리 하위 키의 하위 키로 정의됩니다. 예를 들어 인식된 형식 텍스트 는 다음과 같이 등록됩니다.
HKEY_CLASSES_ROOT
SystemFileAssociations
text
shell
edit
command
(Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
open
command
(Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
파일 형식의 인식된 형식은 파일 형식의 하위 키에 PerceivedType 값을 포함하여 표시됩니다. PerceivedType 값은 이전 레지스트리 예제와 같이 HKEY_CLASSES_ROOT\SystemFileAssociations 레지스트리 하위 키에 등록된 인식된 형식의 이름으로 설정됩니다. 예를 들어 .cpp 파일을 인식된 형식의 "text"로 선언하려면 다음 레지스트리 항목을 추가합니다.
HKEY_CLASSES_ROOT
.cpp
PerceivedType = text