應用程式資訊清單
應用程式指令清單(也稱為並存應用程式指令清單或 融合 指令清單)是 XML 檔案,描述和識別應用程式在運行時間應該系結至的共用和私用元件。 並存組件的版本必須與用來測試應用程式的組件版本相同。 應用程式指令清單也可能描述應用程式私用檔案的元數據。
如需 XML 架構的完整清單,請參閱 指令清單檔案架構。
應用程式指令清單具有下列元素和屬性。
元素 | 屬性 | 必要 |
---|---|---|
assembly | Yes | |
manifestVersion | Yes | |
noInherit | No | |
assemblyIdentity | Yes | |
type | Yes | |
name | Yes | |
language | No | |
processorArchitecture | No | |
version | Yes | |
publicKeyToken | No | |
compatibility | No | |
應用程式 | No | |
supportedOS | No | |
Id | Yes | |
maxversiontested | No | |
Id | Yes | |
dependency | No | |
dependentAssembly | No | |
file | No | |
name | Yes | |
hashalg | No | |
hash | No | |
activatableClass | No | |
name | Yes | |
threadingModel | Yes | |
activeCodePage | No | |
autoElevate | No | |
disableTheming | No | |
disableWindowFiltering | No | |
dpiAware | No | |
dpiAwareness | No | |
gdiScaling | No | |
highResolutionScrollingAware | No | |
longPathAware | No | |
printerDriverIsolation | No | |
ultraHighResolutionScrollingAware | No | |
msix | No | |
heapType | No | |
supportedArchitectures | No | |
trustInfo | No |
檔案位置
可能的話,您應該將應用程式指令清單內嵌為應用程式 .exe
檔案或 .dll
中的資源。 如果您無法這麼做,您可以將應用程式指令清單檔放在 與 或 .dll
相同的目錄中.exe
。
如需詳細資訊,請參閱 安裝並存元件。
檔案名稱
依照慣例,應用程式指令清單應該具有與應用程式可執行檔相同的名稱,擴展名 .manifest
會附加至其中。
例如,參考example.exe
或應該使用下列檔名語法的應用程式指令清單(如果資源標識符為 1,則可以省略<語法的資源>識別符區example.dll
段)。
example.exe。<resource ID.manifest>
example.dll。<resource ID.manifest>
元素
元素和屬性的名稱會區分大小寫。 元素和屬性的值不區分大小寫,但類型屬性的值除外。
組件
容器專案。 其第一個 子元素必須是 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 元素具有下列屬性。 它沒有子元素。
屬性 | 描述 |
---|---|
type | 指定應用程式或元件類型。 值必須是 win32 ,且全部以小寫為單位。 必要。 |
name | 唯一命名應用程式或元件。 針對名稱使用下列格式: Organization.Division.Name 。 例如 Microsoft.Windows.mysampleApp 。 必要。 |
language | 識別應用程式或元件的語言。 如果應用程式或元件是特定語言,請指定 DHTML 語言程式代碼。 在 用於全球使用的應用程式 assemblyIdentity 中,省略語言屬性。 在用於全球使用之元件的 assemblyIdentity 中,會將語言的值設定為 * 。 選擇性。 |
processorArchitecture | 指定處理器。 有效值包括x86 、 amd64 arm 與 arm64 。 您也可以指定 * ,以確保所有平台都設為目標。 選擇性。 |
version | 指定應用程式或元件版本。 使用四部分版本格式: 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>
compatibility
包含至少一個 應用程式。 其沒有任何屬性。 選擇性。 沒有相容性元素的應用程式指令清單預設為 Windows 7 上的 Windows Vista 相容性。
相容性項目必須位於 命名空間 urn:schemas-microsoft-com:compatibility.v1
中。 相容性的子元素也必須在此命名空間中,藉由繼承或標記。
應用程式
包含至少一個 支援的OS 元素。 從 Windows 10 版本 1903 開始,它也可以包含一個選擇性 的 maxversiontested 元素。 其沒有任何屬性。 選擇性。
supportedOS
supportedOS 元素具有下列屬性。 它沒有子元素。
屬性 | 描述 |
---|---|
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 您可以在 Windows 7 或 Windows 8.x 上執行資源監視器 (resmon),移至 [CPU] 索引卷標,以滑鼠右鍵按兩下數據行卷標[選取數據行...],然後檢查 [操作系統內容]。 在 Windows 8.x 上,您也可以在任務管理員 (taskmgr) 中找到此資料行。 數據行的內容會顯示找到的最高值或 「Windows Vista」 做為預設值。 |
maxversiontested
maxversiontested 元素會指定應用程式從應用程式最多支援最高版本的最低 OS 版本開始測試的 Windows 版本。 您可以在這裡找到一組完整的版本。 這是供使用 XAML Islands 且未部署在 MSIX 套件中的傳統型應用程式使用。 Windows 10 版本 1903 和更新版本支援這個專案。
maxversiontested 元素具有下列屬性。 它沒有子元素。
屬性 | 描述 |
---|---|
Id | 將 Id 屬性設定為 4 部分版本字串,以指定應用程式所測試的 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 都必須位於一個 相依性內。 其沒有任何屬性。
檔案
指定應用程式私用的檔案。 選擇性。
檔案元素具有下表所示的屬性。
屬性 | 描述 |
---|---|
name | 檔案的名稱。 例如,Comctl32.dll。 必要。 |
hashalg | 用來建立檔案哈希的演算法。 此值應該是SHA1。 選擇性。 |
hash | 依名稱參考之檔案的哈希。 根據哈希演算法,長度的十六進位字串。 選擇性。 |
activatableClass
允許非封裝傳統型應用程式使用使用者定義的 Windows 執行階段 (WinRT) 元件。 Windows 10 版本 1903 和更新版本支援這個專案。 如需詳細資訊,請參閱這篇文章。
activatableClass 元素必須位於 命名空間 urn:schemas-microsoft-com:winrt.v1
中。
activatableClass 元素具有下列屬性。
屬性 | 描述 |
---|---|
name | 指定可啟動類別的類別識別碼。 必要。 |
threadingModel | 表示用於啟動進程內伺服器的 Apartment 線程模型。 有效值包括 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 程式碼頁,或特定地區設定的代碼頁,以取得舊版應用程式相容性。 強烈建議使用 Unicode 的新式應用程式。 在 Windows 11 上,activeCodePage 也可以設定為舊版值或地區設定名稱,例如 en-US 或 ja-JP。
- 在設定為 UTF-8 系統使用中代碼頁的機器上, 舊版 會將程式還原為系統地區設定代碼頁。 如果系統地區設定沒有定義代碼頁,則會使用 Windows-1252/437。 舊 版 代碼頁設定只有在 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 發行者以數位方式簽署。 供內部使用。
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 上的高 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 元素的版本,dpiAwareness 會覆寫 dpiAware 元素。 如果您想要為 Windows 10 版本 1607 指定與舊版作業系統不同的行為,您可以將這兩個元素包含在指令清單中。
dpiAwareness 元素可以包含單一專案或逗號分隔項目清單。 在後者的情況下,會使用操作系統所辨識清單中的第一個 (最左邊) 專案。 如此一來,您可以指定未來 Windows 作業系統版本所支援的不同行為。
下表描述根據 dpiAwareness 元素的存在及其最左邊已辨識專案中包含的文字所產生的行為。 元素內的文字不區分大小寫。
dpiAwareness 元素狀態: | 描述 |
---|---|
元素不存在 | dpiAware 元素會指定進程是否為 dpi 感知。 |
未包含可辨識的專案 | 目前進程預設為 dpi 未察覺。 您可以藉由呼叫 SetProcessDpiAwareness 或 SetProcessDPIAware 函式,以程式設計方式變更此設定。 |
第一個辨識的專案是“系統” | 目前的程式是系統 dpi 感知。 |
第一個辨識的專案是「permonitor」 | 目前的進程是每一監視器 dpi 感知。 |
第一個辨識的專案是 “permonitorv2” | 目前的進程會使用per-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 型傳統型應用程式中的高 DPI 體驗。
您可以藉由使用 value 呼叫 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
指定目前應用程式具有外部位置之套件的身分識別資訊(請參閱 使用外部位置封裝來授與套件身分識別)。 Windows 10 版本 2004 和更新版本支援這個專案。
msix 元素必須位於 命名空間 urn:schemas-microsoft-com:msix.v1
中。 其具有下表所示的屬性。
屬性 | 描述 |
---|---|
publisher | 描述發行者資訊。 此值必須符合封裝應用程式套件指令清單中 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 子代的 level 屬性來指定。 層級的允許值為:
值 | Description |
---|---|
asInvoker | 應用程式會以與啟動它的進程相同的許可權等級執行。 您可以選取 [以 管理員 istrator 身分執行],將應用程式提升為較高的許可權等級。 |
require 管理員 istrator | 應用程式會使用系統管理員許可權執行。 啟動應用程式的用戶必須是 管理員 istrators 群組的成員。 如果開啟程式未以系統管理許可權執行,系統會提示輸入認證。 |
highestAvailable | 應用程式會以最高許可權等級執行。 如果啟動應用程式的使用者是 管理員 istrators 群組的成員,此選項會與 level="requireAdministrator" 相同。 如果可用的許可權等級高於開啟程式層級,系統會提示輸入認證。 |
將層級設定為 highestAvailable
,以確保應用程式會與屬於 管理員 istrators 群組成員的使用者和非成員的使用者成功執行。 如果應用程式只能以系統的系統管理存取權運作,則以 要求的執行層級 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>