應用程式指令清單

應用程式指令清單(也稱為並存應用程式指令清單或 融合 指令清單)是 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
consoleAllocationPolicy
trustInfo

檔案位置

可能的話,您應該將應用程式指令清單內嵌為應用程式 .exe 檔案中的資源,或 .dll。 如果您無法這麼做,您可以將應用程式指令清單檔放在與 .exe.dll相同的目錄中。

如需詳細資訊,請參閱 安裝並存元件。

檔名

依照慣例,應用程式指令清單應該與應用程式的可執行檔同名,並附加 .manifest 擴展名。

例如,參考example.exeexample.dll應該使用下列檔名語法的應用程式指令清單(如果資源標識符為 1,則可以省略<語法的資源>識別符區段)。

example.exe。<資源標識碼>。清單

example.dll。<資源標識碼>。清單

元素

元素和屬性的名稱會區分大小寫。 元素和屬性的值不區分大小寫,但類型屬性的值除外。

組件

容器專案。 其第一個子元素必須是 noInheritassemblyIdentity 元素。 必填。

元件項目必須位於 命名空間 urn:schemas-microsoft-com:asm.v1中。 元件的子項目也必須在此命名空間中,藉由繼承或標記。

元件專案具有下列屬性。

屬性 描述
manifestVersion manifestVersion 屬性必須設定為 1.0

noInherit

將這個專案包含在應用程式指令清單中,以設定從指令清單產生的 啟用內容 ,並加上「無繼承」旗標。 如果未在啟用內容中設定此旗標,且啟用內容為使用中,則會由相同進程、視窗、視窗程式和 異步過程調用中的新線程繼承。 設定此旗標可防止新物件繼承使用中內容。

noInherit 元素是選擇性的,通常省略。 大部分的元件都無法使用不繼承的啟用內容正確運作,因為元件必須明確設計來管理本身啟用內容的傳播。 noInherit 元素的使用需要應用程式指令清單所參考的任何相依元件在其元件指令清單中都有 noInherit 元素。

如果在指令清單中使用 noInherit ,它必須是 元件 元素的第一個子元素。 assemblyIdentity 元素應該緊接在 noInherit 元素之後。 如果未使用 noInherit,assemblyIdentity 必須是元件專案的第一個子元素。 noInherit 元素沒有子專案。 它不是 元件指令清單中的有效專案。

assemblyIdentity

作為 元件 元素的第一個子元素, assemblyIdentity 會描述並唯一識別擁有此應用程式指令清單的應用程式。 作為 dependentAssembly 元素的第一個子元素, assemblyIdentity 描述應用程式所需的並存元件。 請注意,應用程式指令清單中參考的每個元件都需要符合所參考元件本身元件指令清單中 assemblyIdentityassemblyIdentity

assemblyIdentity 元素具有下列屬性。 它沒有子元素。

屬性 描述
類型 指定應用程式或元件類型。 值必須 win32,而且全都以小寫為單位。 必填。
名字 唯一命名應用程式或元件。 針對名稱使用下列格式:Organization.Division.Name。 例如Microsoft.Windows.mysampleApp。 必填。
語言 識別應用程式或元件的語言。 如果應用程式或元件是特定語言,請指定 DHTML 語言程式代碼。 在用於全球使用的應用程式 assemblyIdentity 中,省略語言屬性。
在用於全球使用之元件的 assemblyIdentity 中,會將語言的值設定為 *。 自選。
processorArchitecture 指定處理器。 有效值包括 x86amd64armarm64。 您也可以指定 *,以確保所有平台都設為目標。 自選。
版本 指定應用程式或元件版本。 使用四部分版本格式:mmmmm.nnnnn.ooooo.ppppp。 以句點分隔的每個部分都可以包含 0-65535。 如需詳細資訊,請參閱 元件版本。 必填。
publicKeyToken 16 個字元的十六進位字串,表示應用程式或元件簽署所在公鑰 SHA-1 哈希的最後 8 個字節。 用來簽署目錄的公鑰必須是 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

supportedOS 元素具有下列屬性。 它沒有子元素。

屬性 描述
標識碼 將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 and Windows Server 2022
{1f676c76-80e1-4239-95bb-83d0f6d0da78} -> Windows 8.1 and Windows Server 2012 R2
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} -> Windows 8 and Windows Server 2012
{35138b9a-5d96-4fbd-8e2d-a2440225f93a} -> Windows 7 and Windows Server 2008 R2
{e2011457-1546-43c5-a5fe-008deee3d3f0} -> Windows Vista 2008 Windows Server
你可以在 Windows 7 或 Windows 8.x 上測試,方法是執行資源監控器(resmon),進入 CPU 標籤,右鍵點擊欄位標籤,「選擇欄位...並勾選「作業系統上下文」。 在 Windows 8.x 上,你也可以在工作管理員(taskmgr)中找到這個欄位。 欄位內容顯示找到的最高值,或預設為「Windows Vista」。

maxversiontested

maxversiontested 元素指定應用程式所測試的 Windows 版本,從支援的最小作業系統版本開始,直到最高版本。 您可以 在這裡找到一組完整的版本。 這是供使用 XAML Islands 且未部署在 MSIX 套件中的傳統型應用程式使用。 此元素在 Windows 10、1903 版本及之後版本中獲得支援。

maxversiontested 元素具有下列屬性。 它沒有子元素。

屬性 描述
標識碼 將 Id 屬性設定為四段式版本字串,指定該應用程式測試時所使用的最大 Windows 版本。 例如,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 的第一個子元素必須是 assemblyIdentity 元素,描述應用程式所需的並存元件。 每個 dependentAssembly 都必須位於一個相 依性內。 它沒有屬性。

檔案

指定應用程式私用的檔案。 自選。

檔案元素具有下表所示的屬性。

屬性 描述
名字 檔案的名稱。 例如,Comctl32.dll。 必填。
hashalg 用來建立檔案哈希的演算法。 此值應該是SHA1。 自選。
散列 依名稱參考之檔案的哈希。 根據哈希演算法,長度的十六進位字串。 自選。

activatableClass

允許非封裝桌面應用程式使用使用者自訂的 Windows 執行階段(WinRT)元件。 此元素在 Windows 10、1903 版本及之後版本中獲得支援。 如需詳細資訊,請參閱本文

activatableClass 元素必須位於 命名空間 urn:schemas-microsoft-com:winrt.v1中。

activatableClass 元素具有下列屬性。

屬性 描述
名字 指定可啟動類別的類別識別碼。 必填。
threadingModel 表示用於啟動進程內伺服器的 Apartment 線程模型。 有效值包括 bothSTAMTA。 如需詳細資訊,請參閱本文 。 必填。
<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 代碼頁,或為特定區域選擇代碼頁以符合舊有應用程式相容性。 強烈建議使用 Unicode 的新式應用程式。 在Windows 11上,activeCodePage也可以設定為 Legacy,或是像 en-USja-JP 這類區域名稱。

  • 在設定為 UTF-8 系統使用中代碼頁的機器上, 舊版 會將程式還原為系統地區設定代碼頁。 若系統區域沒有定義的代碼頁,則會使用 Windows-1252/437。 Legacy 代碼頁設定僅支援於 Fusion 清單,且僅以 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,則忽略 dpiAware 元素。 如果你想在 Windows 10(版本 1607)指定與較早作業系統版本不同的行為,可以在清單中包含這兩個元素。

下表描述根據 dpiAware 元素是否存在及其所包含的文字所產生的行為。 元素內的文字不區分大小寫。

dpiAware 項目的狀態 描述
缺席 目前進程預設為 dpi 未察覺。 您可以藉由呼叫 SetProcessDpiAwarenessSetProcessDPIAware 函式,以程式設計方式變更此設定。
包含 “true” 目前的程式是系統 dpi 感知。
包含 “false” Windows Vista、Windows 7 和 Windows 8: 行為與缺少 dpiAware 相同。
Windows 8.1 和 Windows 10:目前程序對 DPI 不知情,你無法透過呼叫 SetProcessDpiAwarenessSetProcessDPIAware函式來程式化更改此設定。
包含 “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 不知情,你無法透過呼叫 SetProcessDpiAwarenessSetProcessDPIAware函式來程式化更改此設定。

欲了解更多關於 dpi 意識設定的資訊,請參閱 Windows<> 上的 High DPI Desktop Application Development。

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 元素狀態: 描述
元素不存在 dpiAware 元素會指定進程是否為 dpi 感知。
未包含可辨識的專案 目前進程預設為 dpi 未察覺。 您可以藉由呼叫 SetProcessDpiAwarenessSetProcessDPIAware 函式,以程式設計方式變更此設定。
第一個辨識的專案是“系統” 目前的程式是系統 dpi 感知。
第一個辨識的專案是「permonitor」 目前的進程是每一監視器 dpi 感知。
第一個辨識的專案是 “permonitorv2” 目前的進程會使用per-monitor-v2 dpi感知內容。 此項目僅能在 Windows 10 1703 或更新版本上被識別。
第一個辨識的專案「不知道」 目前的進程不會察覺到 dpi。 您無法藉由呼叫 SetProcessDpiAwarenessSetProcessDPIAware 函式,以程式設計方式變更此設定。

如需這個專案所支援 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元素的作業系統最低版本為 1703 Windows 10。

GDI (圖形裝置介面) 架構可以套用 DPI 縮放比例,以個別監視器為基礎,而不需要更新應用程式本身。 這對於不再主動更新 GDI 應用程式很有用。

非向量圖形(例如點陣圖、圖示或工具列)無法由這個項目縮放。 此外,應用程式動態建構之位圖內的圖形和文字也無法由這個項目縮放。 如需詳細資訊,請參閱 改善 GDI 型傳統型應用程式中的高 DPI 體驗

您可以藉由使用 value 呼叫 SetThreadDpiAwarenessContext 函式,以程式設計方式變更此設定。

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

指定目前應用程式具有外部位置之套件的身分識別資訊(請參閱 使用外部位置封裝來授與套件身分識別)。 此元素在 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>

consoleAllocationPolicy

主控台應用程式在從檔案總管或類似工具啟動時,會自動生成終端視窗(主控台主機)。 將此元素設為 可以 detached 防止這種情況。 這可以用來建立一個應用程式,當從檔案總管啟動時,行為像純圖形介面應用程式,同時在從現有終端機會話啟動時允許終端機輸出。

請參閱 主控台配置政策

這個項目沒有屬性。

此元素支援於 Windows 11 24H2 及 Windows Server 2025 或更新版本。

<assembly manifestVersion="1.0">
  <application>
    <windowsSettings>
      <consoleAllocationPolicy xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">detached</consoleAllocationPolicy>
    </windowsSettings>
  </application>
</assembly>

trustInfo

所有符合 UAC 規範的應用程式都應該將要求的執行層級新增至應用程式指令清單。 要求的執行層級會指定應用程式所需的許可權。 如需詳細資訊,請參閱 用戶帳戶控制 (UAC) 如何影響您的應用程式

要求的執行層級是使用 trustInfo 元素之 requestedExecutionLevel 子代的 level 屬性來指定。 層級的允許值為:

價值 描述
asInvoker 應用程式會以與啟動它的進程相同的許可權等級執行。 您可以選取 [以系統管理員身分執行] ,將應用程式提升為較高的許可權等級。
requireAdministrator 應用程式會使用系統管理員許可權執行。 啟動應用程式的用戶必須是Administrators群組的成員。 如果開啟程式未以系統管理許可權執行,系統會提示輸入認證。
highestAvailable 應用程式會以最高許可權等級執行。 如果啟動應用程式的使用者是 Administrators 群組的成員,此選項會與 level="requireAdministrator"相同。 如果可用的許可權等級高於開啟程式層級,系統會提示輸入認證。

將層級設定為 highestAvailable 可確保應用程式會與屬於Administrators群組成員的使用者和非系統管理員群組成員的用戶順利執行。 如果應用程式只能以系統管理存取權運作,則以要求的執行層級標記應用程式,requireAdministrator 可確保系統將此程式識別為系統管理應用程式,並執行必要的提高許可權步驟。

根據預設,Visual C++鏈接器會將 UAC 片段內嵌至執行層級為 asInvoker的應用程式指令清單。

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>