애플리케이션 매니페스트(병렬 애플리케이션 매니페스트 또는 퓨전 매니페스트라고도 함)는 런타임에 애플리케이션이 바인딩해야 하는 공유 및 프라이빗 병렬 어셈블리를 설명하고 식별하는 XML 파일입니다. 애플리케이션을 테스트하는 데 사용된 것과 동일한 어셈블리 버전이어야 합니다. 애플리케이션 매니페스트는 애플리케이션에 비공개인 파일에 대한 메타데이터를 설명할 수도 있습니다.
XML 스키마의 전체 목록은 매니페스트 파일 스키마를 참조하세요.
애플리케이션 매니페스트에는 다음과 같은 요소와 특성이 있습니다.
요소 | 특성 | 필수 |
---|---|---|
집회 | 예 | |
manifestVersion | 예 | |
noInherit | 아니오 | |
assemblyIdentity | 예 | |
형 | 예 | |
이름 | 예 | |
언어 | 아니오 | |
processorArchitecture | 아니오 | |
버전 | 예 | |
publicKeyToken | 아니오 | |
호환성 | 아니오 | |
신청 | 아니오 | |
supportedOS | 아니오 | |
아이디 | 예 | |
maxversiontested | 아니오 | |
아이디 | 예 | |
속국 | 아니오 | |
dependentAssembly | 아니오 | |
파일 | 아니오 | |
이름 | 예 | |
hashalg | 아니오 | |
해시 | 아니오 | |
activatableClass | 아니오 | |
이름 | 예 | |
threadingModel | 예 | |
activeCodePage | 아니오 | |
autoElevate | 아니오 | |
disableTheming | 아니오 | |
disableWindowFiltering | 아니오 | |
dpiAware | 아니오 | |
dpiAwareness | 아니오 | |
gdiScaling | 아니오 | |
highResolutionScrollingAware | 아니오 | |
longPathAware | 아니오 | |
printerDriverIsolation | 아니오 | |
ultraHighResolutionScrollingAware | 아니오 | |
msix | 아니오 | |
heapType | 아니오 | |
supportedArchitectures | 아니오 | |
trustInfo | 아니오 |
파일 위치
가능하면 애플리케이션 매니페스트를 애플리케이션 파일 .exe
또는 .dll
에 리소스로 포함해야 합니다. 이렇게 할 수 없는 경우 애플리케이션 매니페스트 파일을 or.exe
와 동일한 디렉터리에 .dll
배치할 수 있습니다.
자세한 내용은 병렬 어셈블리 설치를 참조하세요.
파일 이름
규칙에 따라 애플리케이션 매니페스트는 확장명이 추가된 앱의 실행 파일과 .manifest
이름이 같아야 합니다.
예를 들어 다음 파일 이름 구문을 참조 example.exe
하거나 example.dll
사용해야 하는 애플리케이션 매니페스트입니다(리소스 ID가 1인 경우 구문의 리소스 ID> 세그먼트를 생략 < 할 수 있습니다).
example.exe.<리소스 ID>입니다. 나타나다
example.dll.<리소스 ID>입니다. 나타나다
요소
요소 및 특성의 이름은 대/소문자를 구분합니다. 요소 및 특성의 값은 형식 특성의 값을 제외하고 대/소문자를 구분하지 않습니다.
모임
컨테이너 요소입니다. 첫 번째 하위 요소는 noInherit 또는 assemblyIdentity 요소여야 합니다. 필수 사항입니다.
어셈블리 요소는 네임스페이스에 urn:schemas-microsoft-com:asm.v1
있어야 합니다. 어셈블리의 자식 요소도 상속 또는 태그 지정을 통해 이 네임스페이스에 있어야 합니다.
어셈블리 요소에는 다음과 같은 특성이 있습니다.
특성 | 설명 |
---|---|
manifestVersion |
manifestVersion 특성을 .로 설정1.0 해야 합니다. |
noInherit
애플리케이션 매니페스트에 이 요소를 포함하여 매니페스트에서 생성된 활성화 컨텍스트를 "상속 없음" 플래그로 설정합니다. 이 플래그가 활성화 컨텍스트에서 설정되지 않고 활성화 컨텍스트가 활성 상태이면 동일한 프로세스, 창, 창 프로시저 및 비동기 프로시저 호출의 새 스레드에서 상속됩니다. 이 플래그를 설정하면 새 개체가 활성 컨텍스트를 상속하지 못하게 됩니다.
noInherit 요소는 선택 사항이며 일반적으로 생략됩니다. 어셈블리가 자체 활성화 컨텍스트의 전파를 관리하도록 명시적으로 설계되어야 하므로 대부분의 어셈블리는 상속되지 않는 활성화 컨텍스트를 사용하여 제대로 작동하지 않습니다. noInherit 요소를 사용하려면 애플리케이션 매니페스트에서 참조하는 모든 종속 어셈블리에 해당 어셈블리 매니페스트에 noInherit 요소가 있어야 합니다.
매니페스트에서 noInherit 을 사용하는 경우 어셈블리 요소의 첫 번째 하위 요소여야 합니다. assemblyIdentity 요소는 noInherit 요소 바로 뒤와야 합니다. noInherit을 사용하지 않는 경우 assemblyIdentity는 어셈블리 요소의 첫 번째 하위 요소여야 합니다. noInherit 요소에는 자식 요소가 없습니다. 어셈블리 매니페스트에서 유효한 요소가 아닙니다.
assemblyIdentity
어셈블리 요소의 첫 번째 하위 요소인 assemblyIdentity는 이 애플리케이션 매니페스트를 소유하는 애플리케이션을 설명하고 고유하게 식별합니다. dependentAssembly 요소의 첫 번째 하위 요소인 assemblyIdentity는 애플리케이션에 필요한 병렬 어셈블리를 설명합니다. 애플리케이션 매니페스트에서 참조되는 모든 어셈블리에는 참조된 어셈블리 매니페스트의 assemblyIdentity 와 정확히 일치하는 assemblyIdentity 가 필요합니다.
assemblyIdentity 요소에는 다음과 같은 특성이 있습니다. 하위 요소도 없습니다.
특성 | 설명 |
---|---|
형 | 애플리케이션 또는 어셈블리 형식을 지정합니다. 값은 모두 소문자여야 win32 합니다. 필수 사항입니다. |
이름 | 애플리케이션 또는 어셈블리의 이름을 고유하게 지정합니다. 이름 Organization.Division.Name 에 다음 형식을 사용합니다. (예: Microsoft.Windows.mysampleApp ) 필수 사항입니다. |
언어 | 애플리케이션 또는 어셈블리의 언어를 식별합니다. 애플리케이션 또는 어셈블리가 언어별인 경우 DHTML 언어 코드를 지정합니다. 전 세계적으로 사용하기 위한 애플리케이션의 assemblyIdentity 에서(언어 중립) 언어 특성을 생략합니다. 전 세계적으로 사용하기 위한 어셈블리의 assemblyIdentity (언어 중립)에서 언어 * 값을 .로 설정합니다. 선택 사항입니다. |
processorArchitecture | 프로세서를 지정합니다. 유효한 값에는 x86 , amd64 arm 및 arm64 . 모든 플랫폼이 대상으로 지정되도록 지정하여 지정할 * 수도 있습니다. 선택 사항입니다. |
버전 | 애플리케이션 또는 어셈블리 버전을 지정합니다. 4부로 구성된 버전 형식 mmmmm.nnnnn.ooooo.ppppp 을 사용합니다. 마침표로 구분된 각 파트는 0-65535를 포함할 수 있습니다. 자세한 내용은 어셈블리 버전을 참조하세요. 필수 사항입니다. |
publicKeyToken | 애플리케이션 또는 어셈블리가 서명된 공개 키의 SHA-1 해시의 마지막 8바이트를 나타내는 16자 16자 16진수 문자열입니다. 카탈로그에 서명하는 데 사용되는 공개 키는 2048비트 이상이어야 합니다. 모든 공유 병렬 어셈블리에 필요합니다. |
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
...
</assembly>
호환성
하나 이상의 애플리케이션을 포함합니다. 특성이 없습니다. 선택 사항입니다. 호환성 요소가 없는 애플리케이션 매니페스트는 기본적으로 Windows 7의 Windows Vista 호환성입니다.
호환성 요소는 네임스페이스에 urn:schemas-microsoft-com:compatibility.v1
있어야 합니다.
호환성의 자식 요소도 상속 또는 태그 지정을 통해 이 네임스페이스에 있어야 합니다.
신청
하나 이상의 지원되는OS 요소를 포함합니다. Windows 10 버전 1903부터 선택적 maxversiontested 요소 하나를 포함할 수도 있습니다. 특성이 없습니다. 선택 사항입니다.
supportedOS
지원되는OS 요소에는 다음과 같은 특성이 있습니다. 하위 요소도 없습니다.
특성 | 설명 |
---|---|
아이디 | Id 특성을 {e2011457-1546-43c5-a5fe-008deee3d3f0} 로 설정하여 Vista 기능을 사용하여 애플리케이션을 실행합니다. 이렇게 하면 Windows Vista용으로 설계된 애플리케이션이 이후 운영 체제에서 실행되도록 설정할 수 있습니다. Id 특성을 {35138b9a-5d96-4fbd-8e2d-a2440225f93a} 로 설정하여 Windows 7 기능을 사용하여 애플리케이션을 실행합니다. Windows Vista, Windows 7 및 Windows 8 기능을 지원하는 애플리케이션에는 별도의 매니페스트가 필요하지 않습니다. 이 경우 모든 Windows 운영 체제에 대한 GUID를 추가합니다. Windows의 ID 특성 동작에 대한 자세한 내용은 Windows 8 및 Windows Server 2012 호환성 쿡북을 참조하세요. 다음 GUID는 표시된 운영 체제에 해당합니다. {8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a} -> Windows 10, Windows 11, Windows Server 2016, Windows Server 2019 및 Windows Server 2022 {1f676c76-80e1-4239-95bb-83d0f6d0da78} -> Windows 8.1 및 Windows Server 2012 R2 {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} -> Windows 8 및 Windows Server 2012 {35138b9a-5d96-4fbd-8e2d-a2440225f93a} -> Windows 7 및 Windows Server 2008 R2 {e2011457-1546-43c5-a5fe-008deee3d3f0} -> Windows Vista 및 Windows Server 2008 리소스 모니터(resmon)를 실행하고, CPU 탭으로 이동하고, 열 레이블 "열 선택..."을 마우스 오른쪽 단추로 클릭하고, "운영 체제 컨텍스트"를 확인하여 Windows 7 또는 Windows 8.x에서 이 테스트를 수행할 수 있습니다. Windows 8.x의 작업 관리자(taskmgr)에서 이 열을 찾을 수도 있습니다. 열의 내용에는 찾은 값이 가장 높거나 "Windows Vista"가 기본값으로 표시됩니다. |
maxversiontested
maxversiontested 요소는 애플리케이션이 최대 버전까지 지원하는 최소 OS 버전부터 시작하여 애플리케이션이 테스트된 Windows 버전을 지정합니다. 전체 버전 집합은 여기에서 찾을 수 있습니다. 이는 XAML Islands 를 사용하고 MSIX 패키지에 배포되지 않은 데스크톱 애플리케이션에서 사용하기 위한 것입니다. 이 요소는 Windows 10 버전 1903 이상 버전에서 지원됩니다.
maxversiontested 요소에는 다음 특성이 있습니다. 하위 요소도 없습니다.
특성 | 설명 |
---|---|
아이디 | Id 특성을 애플리케이션이 테스트된 Windows의 최대 버전을 지정하는 4부로 구성된 버전 문자열로 설정합니다. 예를 들어 Windows 10 버전 1903의 경우 "10.0.18362.1"입니다. 필수 사항입니다. |
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10, version 1903 -->
<maxversiontested Id="10.0.18362.1"/>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
...
</assembly>
의존성
하나 이상의 dependentAssembly를 포함합니다. 특성이 없습니다. 선택 사항입니다.
dependentAssembly
dependentAssembly의 첫 번째 하위 요소는 애플리케이션에 필요한 side-by-side 어셈블리를 설명하는 assemblyIdentity 요소여야 합니다. 모든 dependentAssembly는 정확히 하나의 종속성 내에 있어야 합니다. 특성이 없습니다.
파일
애플리케이션에 대한 프라이빗 파일을 지정합니다. 선택 사항입니다.
파일 요소에는 다음 표에 표시된 특성이 있습니다.
특성 | 설명 |
---|---|
이름 | 파일의 이름입니다. 예를 들어 Comctl32.dll. 필수 사항입니다. |
hashalg | 파일의 해시를 만드는 데 사용되는 알고리즘입니다. 이 값은 SHA1이어야 합니다. 선택 사항입니다. |
해시 | 이름으로 참조되는 파일의 해시입니다. 해시 알고리즘에 따라 길이가 16진수인 문자열입니다. 선택 사항입니다. |
activatableClass
패키지가 아닌 데스크톱 앱이 WinRT(사용자 정의 Windows 런타임) 구성 요소를 사용할 수 있도록 허용합니다. 이 요소는 Windows 10 버전 1903 이상 버전에서 지원됩니다. 자세한 내용은 이 문서를 참조하세요.
activatableClass 요소는 네임스페이스에 urn:schemas-microsoft-com:winrt.v1
있어야 합니다.
activatableClass 요소에는 다음과 같은 특성이 있습니다.
특성 | 설명 |
---|---|
이름 | 활성화 가능한 클래스의 클래스 식별자를 지정합니다. 필수 사항입니다. |
threadingModel | In-process 서버를 활성화하는 데 사용할 아파트 스레딩 모델을 나타냅니다. 유효한 값에는 포함 both , STA 또는 MTA . 자세한 내용은 이 문서를 참조하세요. 필수 사항입니다. |
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<file name="WinRTComponent.dll">
<activatableClass
name="WinRTComponent.MessageHolder"
threadingModel="both"
xmlns="urn:schemas-microsoft-com:winrt.v1"
/>
</file>
...
</assembly>
activeCodePage
Windows 10에서 이 요소는 프로세스에서 UTF-8을 프로세스 코드 페이지로 사용하도록 강제합니다. 자세한 내용은 UTF-8 코드 페이지 사용을 참조하세요. Windows 10에서 activeCodePage 에 유효한 값은 UTF-8뿐입니다.
Windows 11부터 이 요소를 사용하면 레거시 비 UTF-8 코드 페이지 또는 레거시 애플리케이션 호환성을 위한 특정 로캘에 대한 코드 페이지를 선택할 수도 있습니다. 최신 애플리케이션은 유니코드를 사용하는 것이 좋습니다. Windows 11에서 activeCodePage 는 레거시 값 또는 로캘 이름(예: en-US 또는 ja-JP)으로 설정할 수도 있습니다.
- UTF-8 시스템 활성 코드 페이지로 구성된 컴퓨터에서 레거시 는 프로세스를 시스템 로캘 코드 페이지로 되돌려 줍니다. 시스템 로캘에 정의된 코드 페이지가 없으면 Windows-1252/437이 사용됩니다. 레거시 코드 페이지 설정은 Fusion 매니페스트에서만 지원되며 Windows 11부터만 지원됩니다.
- en-US같은 로 캘 이름을 제공하면 프로세스 코드 페이지가 해당 로캘 코드 페이지에 적절하게 설정됩니다. 예를 들어 en-USWindows-1252 및 437 또는 ja-JP경우 932입니다.
이 요소는 Windows 10 버전 1903(2019년 5월 업데이트)에서 처음 추가되었습니다. 이전 Windows 빌드에서 이 속성을 선언하고 대상/실행할 수 있지만 레거시 코드 페이지 검색 및 변환을 평소와 같이 처리해야 합니다. 이 요소에는 특성이 없습니다.
다음 예제에서는 이 요소를 사용하여 현재 프로세스에서 UTF-8을 프로세스 코드 페이지로 사용하도록 강제 적용하는 방법을 보여 줍니다.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">
<activeCodePage>UTF-8</activeCodePage>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
autoElevate
자동 상승이 사용되는지 여부를 지정합니다. TRUE 는 사용하도록 설정되어 있음을 나타냅니다. 특성이 없습니다. 실행 파일은 Windows Publisher에서 디지털 서명해야 합니다. 내부용.
disableTheming
UI 요소에 테마를 제공할 수 없는지 여부를 지정합니다. TRUE 는 사용할 수 없음을 나타냅니다. 특성이 없습니다.
disableWindowFiltering
창 필터링을 사용하지 않도록 설정할지 여부를 지정합니다. TRUE 는 데스크톱에서 몰입형 창을 열거할 수 있도록 창 필터링을 사용하지 않도록 설정합니다. disableWindowFiltering 이 Windows 8에 추가되었으며 특성이 없습니다.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
<disableWindowFiltering>true</disableWindowFiltering>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
dpiAware
현재 프로세스가 dpi(인치당 점) 인식인지 여부를 지정합니다.
Windows 10 버전 1607:dpiAwareness 요소가 있으면 dpiAware 요소가 무시됩니다. 이전 버전의 운영 체제와 다른 Windows 10 버전 1607에 대해 다른 동작을 지정하려는 경우 매니페스트에 두 요소를 모두 포함할 수 있습니다.
다음 표에서는 dpiAware 요소의 존재와 해당 요소에 포함된 텍스트에 따라 발생하는 동작에 대해 설명합니다. 요소 내의 텍스트는 대/소문자를 구분하지 않습니다.
dpiAware 요소의 상태 | 설명 |
---|---|
없는 | 현재 프로세스는 기본적으로 dpi를 인식하지 못합니다. SetProcessDpiAwareness 또는 SetProcessDPIAware 함수를 호출하여 이 설정을 프로그래밍 방식으로 변경할 수 있습니다. |
"true"를 포함합니다. | 현재 프로세스는 시스템 dpi 인식입니다. |
"false"를 포함합니다. |
Windows Vista, Windows 7 및 Windows 8: 동작은 dpiAware 가 없는 경우와 동일합니다. Windows 8.1 및 Windows 10: 현재 프로세스는 dpi를 인식하지 못하며 SetProcessDpiAwareness 또는 SetProcessDPIAware 함수를 호출하여 이 설정을 프로그래밍 방식으로 변경할 수 없습니다. |
"true/pm"을 포함합니다. |
Windows Vista, Windows 7 및 Windows 8: 현재 프로세스는 시스템 dpi 인식입니다. Windows 8.1 및 Windows 10: 현재 프로세스는 모니터별 dpi 인식입니다. |
"모니터당"을 포함합니다. |
Windows Vista, Windows 7 및 Windows 8: 동작은 dpiAware 가 없는 경우와 동일합니다. Windows 8.1 및 Windows 10: 현재 프로세스는 모니터별 dpi 인식입니다. |
다른 문자열을 포함합니다. |
Windows Vista, Windows 7 및 Windows 8: 동작은 dpiAware 가 없는 경우와 동일합니다. Windows 8.1 및 Windows 10: 현재 프로세스는 dpi를 인식하지 못하며 SetProcessDpiAwareness 또는 SetProcessDPIAware 함수를 호출하여 이 설정을 프로그래밍 방식으로 변경할 수 없습니다. |
dpi 인식 설정에 대한 자세한 내용은 Windows의 High DPI Desktop 애플리케이션 개발을 참조하세요.
dpiAware 에는 특성이 없습니다.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
dpiAwareness
현재 프로세스가 dpi(인치당 점) 인식인지 여부를 지정합니다.
dpiAwareness 요소를 지원하는 운영 체제의 최소 버전은 Windows 10 버전 1607입니다. dpiAwareness 요소를 지원하는 버전의 경우 dpiAwareness는 dpiAware 요소를 재정의합니다. 이전 버전의 운영 체제와 다른 Windows 10 버전 1607에 대해 다른 동작을 지정하려는 경우 매니페스트에 두 요소를 모두 포함할 수 있습니다.
dpiAwareness 요소는 단일 항목 또는 쉼표로 구분된 항목 목록을 포함할 수 있습니다. 후자의 경우 운영 체제에서 인식하는 목록의 첫 번째(맨 왼쪽) 항목이 사용됩니다. 이러한 방식으로 향후 Windows 운영 체제 버전에서 지원되는 다양한 동작을 지정할 수 있습니다.
다음 표에서는 dpiAwareness 요소의 존재와 dpiAwareness 요소가 가장 왼쪽에 인식된 항목에 포함된 텍스트를 기반으로 하는 동작에 대해 설명합니다. 요소 내의 텍스트는 대/소문자를 구분하지 않습니다.
dpiAwareness 요소 상태: | 설명 |
---|---|
요소가 없습니다. | dpiAware 요소는 프로세스가 dpi 인식인지 여부를 지정합니다. |
인식된 항목이 없습니다. | 현재 프로세스는 기본적으로 dpi를 인식하지 못합니다. SetProcessDpiAwareness 또는 SetProcessDPIAware 함수를 호출하여 이 설정을 프로그래밍 방식으로 변경할 수 있습니다. |
첫 번째 인식 항목은 "시스템"입니다. | 현재 프로세스는 시스템 dpi 인식입니다. |
첫 번째 인식 항목은 "permonitor"입니다. | 현재 프로세스는 모니터별 dpi 인식입니다. |
첫 번째 인식 항목은 "permonitorv2"입니다. | 현재 프로세스는 monitor-v2 dpi 인식 컨텍스트를 사용합니다. 이 항목은 Windows 10 버전 1703 이상에서만 인식됩니다. |
처음 인식된 항목은 "인식할 수 없음"입니다. | 현재 프로세스는 dpi를 인식하지 못합니다. SetProcessDpiAwareness 또는 SetProcessDPIAware 함수를 호출하여 이 설정을 프로그래밍 방식으로 변경할 수 없습니다. |
이 요소에서 지원하는 dpi 인식 설정에 대한 자세한 내용은 DPI_AWARENESS 및 DPI_AWARENESS_CONTEXT 참조하세요.
dpiAwareness 에는 특성이 없습니다.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<dpiAwareness>PerMonitorV2, unaware</dpiAwareness>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
gdiScaling
GDI 크기 조정을 사용할지 여부를 지정합니다. gdiScaling 요소를 지원하는 운영 체제의 최소 버전은 Windows 10 버전 1703입니다.
GDI(그래픽 디바이스 인터페이스) 프레임워크는 애플리케이션 자체에 대한 업데이트 없이 모니터별로 기본 형식 및 텍스트에 DPI 크기 조정을 적용할 수 있습니다. 이 기능은 GDI 애플리케이션이 더 이상 적극적으로 업데이트되지 않는 데 유용할 수 있습니다.
비트맵, 아이콘 또는 도구 모음과 같은 비벡터 그래픽은 이 요소로 크기를 조정할 수 없습니다. 또한 애플리케이션에서 동적으로 생성된 비트맵 내에 나타나는 그래픽 및 텍스트도 이 요소로 크기를 조정할 수 없습니다. 자세한 내용은 GDI 기반 Desktop Apps에서 높은 DPI 환경 개선을 참조하세요.
SetThreadDpiAwarenessContext 또는 SetProcessDpiAwarenessContext 함수를 값으로 DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
호출하여 이 설정을 프로그래밍 방식으로 변경할 수 있습니다.
TRUE 는 이 요소가 사용하도록 설정되어 있음을 나타냅니다. 특성이 없습니다.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
<gdiScaling>true</gdiScaling>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
highResolutionScrollingAware
고해상도 스크롤 인식이 사용되는지 여부를 지정합니다. TRUE 는 사용하도록 설정되어 있음을 나타냅니다. 특성이 없습니다.
longPathAware
길이가 MAX_PATH 초과하는 긴 경로를 사용하도록 설정합니다. 이 요소는 Windows 10 버전 1607 이상에서 지원됩니다. 자세한 내용은 이 문서를 참조하세요.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<ws2:longPathAware>true</ws2:longPathAware>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
printerDriverIsolation
프린터 드라이버 격리를 사용할지 여부를 지정합니다. TRUE 는 사용하도록 설정되어 있음을 나타냅니다. 특성이 없습니다. 프린터 드라이버 격리는 인쇄 스풀러가 실행되는 프로세스와 별개인 프로세스에서 프린터 드라이버를 실행할 수 있도록 하여 Windows 인쇄 서비스의 안정성을 향상시킵니다. 프린터 드라이버 격리 지원은 Windows 7 및 Windows Server 2008 R2에서 시작되었습니다. 앱은 앱 매니페스트에서 프린터 드라이버 격리를 선언하여 프린터 드라이버로부터 자신을 격리하고 안정성을 향상시킬 수 있습니다. 즉, 프린터 드라이버에 오류가 있으면 앱이 충돌하지 않습니다.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
<printerDriverIsolation>true</printerDriverIsolation>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
ultraHighResolutionScrollingAware
초고해상도 스크롤 인식이 사용되는지 여부를 지정합니다. TRUE 는 사용하도록 설정되어 있음을 나타냅니다. 특성이 없습니다.
msix
현재 애플리케이션의 외부 위치가 있는 패키지의 ID 정보를 지정합니다( 외부 위치로 패키징하여 패키지 ID 부여 참조). 이 요소는 Windows 10 버전 2004 이상 버전에서 지원됩니다.
msix 요소는 네임스페이스에 urn:schemas-microsoft-com:msix.v1
있어야 합니다. 다음 표에 표시된 특성이 있습니다.
특성 | 설명 |
---|---|
게시자 | 게시자 정보를 설명합니다. 이 값은 패키지된 앱의 패키지 매니페스트에 있는 Identity 요소의 Publisher 특성과 외부 위치와 일치해야 합니다. |
packageName | 패키지의 내용을 설명합니다. 이 값은 패키지된 앱의 패키지 매니페스트에 있는 Identity 요소의 Name 특성과 외부 위치와 일치해야 합니다. |
applicationId | 애플리케이션의 고유 식별자입니다. 이 값은 패키지된 앱의 패키지 매니페스트에 있는 Application 요소의 ID 특성과 외부 위치와 일치해야 합니다. |
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="Contoso.PhotoStoreApp"/>
<msix xmlns="urn:schemas-microsoft-com:msix.v1"
publisher="CN=Contoso"
packageName="ContosoPhotoStore"
applicationId="ContosoPhotoStore"
/>
</assembly>
heapType
사용할 Win32 힙 API 에 대한 기본 힙 구현을 재정의합니다.
- SegmentHeap 값은 세그먼트 힙이 사용됨을 나타냅니다. 세그먼트 힙은 일반적으로 전체 메모리 사용량을 줄이는 최신 힙 구현입니다. 이 요소는 Windows 10 버전 2004(빌드 19041) 이상에서 지원됩니다.
- 다른 모든 값은 무시됩니다.
이 요소에는 특성이 없습니다.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">
<heapType>SegmentHeap</heapType>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
supportedArchitectures
IL 전용 .NET Framework 실행 파일의 경우 애플리케이션이 호환되는 네이티브 프로세서 아키텍처 목록을 지정합니다. 공백으로 구분된 다음 값 중 하나 이상을 포함할 수 있습니다.
- amd64
- arm64
이 요소에는 특성이 없습니다.
이 요소는 Windows 11 버전 24H2 이상에서 지원됩니다.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">
<supportedArchitectures>amd64 arm64</supportedArchitectures>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
trustInfo
모든 UAC 규격 앱에는 요청된 실행 수준이 애플리케이션 매니페스트에 추가되어야 합니다. 요청된 실행 수준은 앱에 필요한 권한을 지정합니다. 자세한 내용은 UAC(사용자 계정 컨트롤)가 애플리케이션에 미치는 영향을 참조하세요.
요청된 실행 수준은 trustInfo 요소의 requestedExecutionLevel 하위 항목의 수준 특성으로 지정됩니다. 수준에 허용되는 값은 다음과 같습니다.
가치 | 설명 |
---|---|
asInvoker | 애플리케이션은 애플리케이션을 시작한 프로세스와 동일한 권한 수준에서 실행됩니다. 관리자 권한으로 실행을 선택하여 애플리케이션을 더 높은 권한 수준으로 승격할 수 있습니다. |
requireAdministrator | 애플리케이션은 관리자 권한을 사용하여 실행됩니다. 애플리케이션을 시작하는 사용자는 Administrators 그룹의 구성원이어야 합니다. 여는 프로세스가 관리 권한으로 실행되고 있지 않으면 시스템에서 자격 증명을 묻는 메시지를 표시합니다. |
highestAvailable | 애플리케이션은 사용할 수 있는 가장 높은 권한 수준에서 실행됩니다. 애플리케이션을 시작하는 사용자가 Administrators 그룹의 구성원인 경우 이 옵션은 다음과 같습니다 level="requireAdministrator" . 사용 가능한 가장 높은 사용 권한 수준이 여는 프로세스 수준보다 높은 경우 시스템에서 자격 증명을 묻는 메시지를 표시합니다. |
관리자 그룹의 구성원인 사용자와 그렇지 않은 사용자 둘 다에서 애플리케이션이 성공적으로 실행되도록 수준을 highestAvailable
설정합니다. 애플리케이션이 시스템에 대한 관리 액세스 권한으로만 작동할 수 있는 경우 요청된 실행 수준으로 requireAdministrator
앱을 표시하면 시스템이 이 프로그램을 관리 앱으로 식별하고 필요한 권한 상승 단계를 수행합니다.
기본적으로 Visual C++ 링커는 실행 수준이 asInvoker
있는 애플리케이션의 매니페스트에 UAC 조각을 포함합니다.
requestedExecutionLevel 요소에는 선택적 특성 uiAccess도 있습니다. 애플리케이션이 사용자 인터페이스 보호 수준을 우회하고 입력을 데스크톱에서 더 높은 사용 권한 창으로 유도하려는 경우 이 값을 true
설정합니다. 사용자 인터페이스 접근성 애플리케이션에 대해서만 이 특성을 true
설정합니다. 기본값은 false
입니다. 보안 정책 설정의 추가 제한 사항이 적용될 수 있습니다. 사용자 계정 컨트롤: 보안 위치에 설치된 UIAccess 애플리케이션만 상승합니다. 자세한 내용은 보조 기술에 대한 보안 고려 사항을 참조하세요.
requestedExecutionLevel 노드를 지정하면 파일 및 레지스트리 가상화가 비활성화됩니다. 이전 버전과의 호환성을 위해 파일 및 레지스트리 가상화를 활용하려면 requestedExecutionLevel 노드를 생략합니다.
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
예시
다음은 MySampleApp.exe애플리케이션에 대한 애플리케이션 매니페스트의 예입니다. 애플리케이션은 SampleAssembly 병렬 어셈블리를 사용합니다.
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="MyOrganization.MyDivision.MySampleApp" version="6.0.0.0" processorArchitecture="*" />
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="*" publicKeyToken="0000000000000000" />
</dependentAssembly>
</dependency>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 and Windows 11 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
</application>
</compatibility>
</assembly>