애플리케이션 매니페스트

애플리케이션 매니페스트(병렬 애플리케이션 매니페스트 또는 융합 매니페스트라고도 함)는 애플리케이션이 런타임에 바인딩해야 하는 공유 및 프라이빗 병렬 어셈블리를 설명하고 식별하는 XML 파일입니다. 이는 애플리케이션을 테스트하는 데 사용된 어셈블리 버전과 동일해야 합니다. 애플리케이션 매니페스트에서는 애플리케이션에 전용인 파일의 메타데이터를 설명하기도 합니다.

XML 스키마의 전체 목록은 매니페스트 파일 스키마를 참조하세요.

애플리케이션 매니페스트에는 다음 요소와 특성이 있습니다.

요소 특성 Required
assembly
manifestVersion
noInherit 아니요
assemblyIdentity
type
이름
언어 아니요
processorArchitecture 아니요
version
publicKeyToken 아니요
호환성 아니요
application 아니요
supportedOS 아니요
ID
maxversiontested 아니요
ID
dependency 아니요
dependentAssembly 아니요
file 아니요
이름
hashalg 아니요
hash 아니요
activatableClass 아니요
이름
threadingModel
activeCodePage 아니요
autoElevate 아니요
disableTheming 아니요
disableWindowFiltering 아니요
dpiAware 아니요
dpiAwareness 아니요
gdiScaling 아니요
highResolutionScrollingAware 아니요
longPathAware 아니요
printerDriverIsolation 아니요
ultraHighResolutionScrollingAware 아니요
msix 아니요
heapType 아니요
supportedArchitectures 아니요
trustInfo 아니요

파일 위치

가능하면 애플리케이션 매니페스트를 애플리케이션 .exe 파일 또는 .dll에 리소스로써 포함해야 합니다. 불가능한 경우, 애플리케이션 매니페스트 파일을 .exe 또는 .dll와 동일한 디렉터리에 배치할 수 있습니다.

자세한 내용은 병렬 어셈블리 설치를 참조하세요.

파일 이름

규칙에 따라 애플리케이션 매니페스트는 확장명이 추가된 .manifest과 앱 실행 파일의 이름이 같아야 합니다.

예를 들어, 다음 파일 이름 구문을 참조하거나 사용해야 하는 example.exe 또는 example.dll를 참조하는 애플리케이션 매니페스트입니다(리소스 ID가 1인 경우 구문의 <리소스 ID> 세그먼트를 생략할 수 있습니다).

example.exe.<리소스 ID>.manifest

example.dll.<리소스 ID>.manifest

Elements

요소 및 특성 이름은 대/소문자를 구분합니다. 요소 및 특성 값은 형식 특성의 값을 제외하고 대/소문자를 구분합니다.

assembly

컨테이너 요소. 첫 번째 하위 요소는 noInherit 또는 assemblyIdentity 요소여야 합니다. 필수입니다.

어셈블리 요소는 네임스페이스 urn:schemas-microsoft-com:asm.v1에 있어야 합니다. 어셈블리의 자식 요소 또한 상속 또는 태그 지정을 통해 이 네임스페이스에 있어야 합니다.

어셈블리 요소에 다음 특성이 있습니다.

attribute 설명
manifestVersion manifestVersion 특성을 1.0로 설정해야 합니다.

noInherit

애플리케이션 매니페스트에 이 요소를 포함하여 매니페스트에서 생성된 활성화 컨텍스트를 "상속 없음" 플래그로 설정합니다. 이 플래그가 활성화 컨텍스트에서 설정되지 않고 활성화 컨텍스트가 활성 상태일 경우, 동일한 프로세스, 창, 창 프로시저 및 비동기 프로시저 호출의 새 스레드에서 상속됩니다. 이 플래그를 설정하면 새 개체가 활성 컨텍스트를 상속하지 못하게 방지합니다.

noInherit 요소는 선택사항이며 일반적으로 생략됩니다. 어셈블리가 자체 활성화 컨텍스트의 전파를 관리하도록 명시적으로 설계되어야 하기 때문에 대부분의 어셈블리는 상속되지 않는 활성화 컨텍스트를 사용하여 제대로 작동하지 않습니다. noInherit 요소를 사용하려면 애플리케이션 매니페스트에서 참조하는 모든 종속 어셈블리에 해당 어셈블리 매니페스트noInherit 요소가 있어야 합니다.

매니페스트에서 noInherit을 사용하는 경우, 어셈블리 요소의 첫 번째 하위 요소여야 합니다. assemblyIdentity 요소는 noInherit 요소 바로 뒤에 와야 합니다. noInherit을 사용하지 않는 경우 assemblyIdentity어셈블리 요소의 첫 번째 하위 요소여야 합니다. noInherit 요소에는 자식 요소가 없습니다. 어셈블리 매니페스트에서 유효한 요소가 아닙니다.

assemblyIdentity

어셈블리 요소의 첫 번째 하위 요소인 assemblyIdentity는 이 애플리케이션 매니페스트를 소유하는 애플리케이션을 설명하고 고유하게 식별합니다. dependentAssembly 요소의 첫 번째 하위 요소인 assemblyIdentity는 애플리케이션에 필요한 병렬 어셈블리를 설명합니다. 애플리케이션 매니페스트에서 참조되는 모든 어셈블리에는 참조된 어셈블리 매니페스트의 assemblyIdentity와 정확히 일치하는assemblyIdentity가 필요합니다.

assemblyIdentity 요소에는 다음 특성이 있습니다. 하위 요소가 없습니다.

attribute 설명
type 애플리케이션 또는 어셈블리 형식을 지정합니다. 값은 win32이며 모두 소문자여야 합니다. 필수입니다.
이름 애플리케이션 또는 어셈블리의 고유 이름을 지정합니다. 이때 Organization.Division.Name 형식을 사용합니다. 예: Microsoft.Windows.mysampleApp. 필수입니다.
언어 애플리케이션 또는 어셈블리의 언어를 식별합니다. 애플리케이션 또는 어셈블리가 언어별로 있는 경우, DHTML 언어 코드를 지정합니다. 전 세계적으로 사용하기 위한 애플리케이션의 assemblyIdentity에서(언어 중립) 언어 특성을 생략합니다.
전 세계적으로 사용하기 위한 어셈블리의 assemblyIdentity(언어 중립)에서 언어 값을 *로 설정합니다. 선택 사항.
processorArchitecture 프로세서를 지정합니다. 유효한 값은 x86, amd64, arm, arm64입니다. 모든 플랫폼이 타깃팅되도록 *를 지정할 수도 있습니다. 선택 사항.
version 애플리케이션 또는 어셈블리 버전을 지정합니다. 네 부분으로 구성된 버전 형식 mmmmm.nnnnn.ooooo.ppppp을 사용합니다. 마침표로 구분된 각 파트는 0-65535를 포함할 수 있습니다. 자세한 내용은 어셈블리 버전을 참조하세요. 필수입니다.
publicKeyToken 애플리케이션 또는 어셈블리가 서명되는 공개 키의 SHA-1 해시의 마지막 8바이트를 나타내는 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에 있어야 합니다. 호환성의 자식 요소 또한 상속 또는 태그 지정을 통해 이 네임스페이스에 있어야 합니다.

애플리케이션

하나 이상의 supportedOS 요소를 포함합니다. Windows 10 버전 1903부터 maxversiontested 선택사항 하나를 포함할 수도 있습니다. 특성은 없습니다. 선택 사항.

supportedOS

supportedOS 요소에는 다음 특성이 있습니다. 하위 요소가 없습니다.

attribute 설명
ID 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 요소에는 다음 특성이 있습니다. 하위 요소가 없습니다.

attribute 설명
ID 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>

dependency

최소 하나의 dependentAssembly가 포함됩니다. 특성은 없습니다. 선택 사항.

dependentAssembly

dependentAssembly의 첫 번째 하위 요소는 애플리케이션에 필요한 병렬 어셈블리를 설명하는 assemblyIdentity 요소입니다. 모든 dependentAssembly는 정확히 하나의 종속성 내에 있어야 합니다. 특성은 없습니다.

파일

애플리케이션 전용 파일을 지정합니다. 선택 사항.

파일 요소는 다음 표에 나타난 특성을 지원합니다.

attribute 설명
이름 파일의 이름. 예를 들어 Comctl32.dll. 필수입니다.
hashalg 파일 해시를 만드는 데 사용되는 알고리즘입니다. 이 값은 SHA1여야 합니다. 선택 사항.
hash 이름으로 참조되는 파일의 해시입니다. 해시 알고리즘에 따라 길이가 16진수인 문자열입니다. 선택 사항.

activatableClass

패키지되지 않은 데스크톱 앱이 WinRT(사용자 정의 Windows 런타임) 구성 요소를 사용할 수 있도록 허용합니다. 이 요소는 Windows 10, 버전 1903 이상에서 지원됩니다. 자세한 내용은 문서를 참조하십시오.

activatableClass 요소는 네임스페이스 urn:schemas-microsoft-com:winrt.v1에 있어야 합니다.

activatableClass 요소에는 다음 특성이 있습니다.

attribute 설명
이름 활성화 가능 클래스의 클래스 식별자를 지정합니다. 필수입니다.
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이 사용됩니다. 레거시 코드 페이지 설정은 퓨전 매니페스트에서만 지원되며 Windows 11부터만 지원됩니다.
  • en-US와 같은 로캘 이름을 제공하면 프로세스 코드 페이지가 해당 로캘 코드 페이지에 적절하게 설정됩니다. 예를 들어 en-US는 Windows-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:dpiAware 요소는 dpiAwareness 요소가 있는 경우 무시됩니다. 이전 버전의 운영 체제와 다른 Windows 10 버전 1607에 다른 동작을 지정하려는 경우 매니페스트에 두 요소를 모두 포함할 수 있습니다.

다음 표에서는 dpiAware 요소의 존재와 해당 요소에 포함된 텍스트에 따라 발생하는 동작에 대해 설명합니다. 요소 내의 텍스트는 대/소문자를 구분하지 않습니다.

dpiAware 요소의 상태 설명
Absent 현재 프로세스는 기본적으로 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에서 높은 DPI 데스크톱 애플리케이션 개발을 참조하세요.

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 요소를 지원하는 버전의 경우 dpiAwarenessdpiAware 요소를 재정의합니다. 이전 버전의 운영 체제와 다른 Windows 10 버전 1607에 다른 동작을 지정하려는 경우 매니페스트에 두 요소를 모두 포함할 수 있습니다.

dpiAwareness 요소는 단일 항목 또는 쉼표로 구분된 목록을 포함할 수 있습니다. 후자의 경우 운영 체제에서 인지하는 목록의 첫 번째(맨 왼쪽) 항목이 사용됩니다. 이러한 방식으로 향후 Windows 운영 체제 버전에서 지원되는 다양한 동작을 지정할 수 있습니다.

다음 표에서는 dpiAwareness 요소의 존재와 해당 요소가 가장 왼쪽에 인식된 항목에 포함된 텍스트를 기반으로 하는 동작에 대해 설명합니다. 요소 내의 텍스트는 대/소문자를 구분하지 않습니다.

dpiAwareness 요소 상태: 설명
요소가 없습니다 dpiAware 요소는 프로세스가 DPI 인지인지 여부를 지정합니다.
인식된 항목이 없습니다 현재 프로세스는 기본적으로 dpi를 인지하지 못합니다. SetProcessDpiAwareness 혹은 SetProcessDPIAware 함수를 호출하여 이 설정을 프로그래밍 방식으로 변경할 수 있습니다.
첫 번째 인식 항목은 ”시스템”입니다 현재 프로세스는 시스템 DPI 인지합니다.
첫 번째 인식 항목은 ”permonitor”입니다 현재 프로세스는 모니터별 dpi 인지입니다.
첫 번째 인식 항목은 “permonitorv2”입니다 현재 프로세스는 모니터별 v2 DPI 인지 컨텍스트를 사용합니다. 이 항목은 Windows 10 버전 1703 이상에서만 인식됩니다.
처음 인식된 항목은 “인식할 수 없음”입니다 현재 프로세스는 DPI를 인지하지 못합니다. SetProcessDpiAwareness 또는 SetProcessDPIAware 함수를 호출하여 이 설정을 프로그래밍 방식으로 변경할 수 없습니다.

이 요소에서 지원하는 DPI 인지 설정에 대한 자세한 내용은 DPI_AWARENESSDPI_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 환경 개선을 참조 하세요.

DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED의 값을 사용해서 SetThreadDpiAwarenessContext 혹은 SetProcessDpiAwarenessContext 함수를 값으로 호출하여 이 설정을 프로그래밍 방식으로 변경할 수 있습니다.

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에 있어야 합니다. 여기에는 다음 테이블에 표시된 특성이 있습니다.

attribute 설명
publisher 게시자 정보를 설명합니다. 이 값은 패키지된 앱의 패키지 매니페스트에 있는 ID 요소의 게시자 특성과 외부 위치와 일치해야 합니다.
packageName 해당 패키지의 내용을 설명합니다. 이 값은 패키지된 앱의 패키지 매니페스트에 있는 ID 요소의 이름 특성과 외부 위치와 일치해야 합니다.
applicationId 애플리케이션의 고유 식별자입니다. 이 값은 패키지된 앱의 패키지 매니페스트에 있는 애플리케이션 요소의 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 실행 파일의 경우, 애플리케이션이 호환되는 네이티브 프로세서 아키텍처 목록을 지정합니다. 공백으로 구분되는 다음 값 중 하나 이상을 포함할 수 있습니다:

  • 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 애플리케이션은 관리자 권한을 사용하여 실행됩니다. 애플리케이션을 시작하는 사용자는 관리자 그룹의 구성원이어야 합니다. 여는 프로세스가 관리 권한으로 실행되고 있지 않을 경우, 시스템에서 자격 증명을 묻는 메시지를 표시합니다.
highestAvailable 애플리케이션은 사용 가능한 가장 높은 권한 수준에서 실행됩니다. 애플리케이션을 시작하는 사용자가 관리자 그룹의 구성원인 경우, 이 옵션은 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>