應用程式指令清單
應用程式指令清單(也稱為並存應用程式指令清單,或 融合 指令清單)是 XML 檔案,描述和識別應用程式在運行時間應該系結的共用和私用元件。 這些應該是用來測試應用程式的相同元件版本。 應用程式指令清單也可能描述應用程式私用檔案的元數據。
如需 XML 架構的完整清單,請參閱 指令清單檔案架構。
應用程式指令清單具有下列元素和屬性。
元素 | 屬性 | 必填 |
---|---|---|
元件 | 是的 | |
manifestVersion | 是的 | |
noInherit | 不 | |
assemblyIdentity | 是的 | |
類型 | 是的 | |
名稱 | 是的 | |
語言 | 不 | |
processorArchitecture | 不 | |
版本 | 是的 | |
publicKeyToken | 不 | |
相容性 | 不 | |
應用程式 | 不 | |
支援的OS | 不 | |
識別碼 | 是的 | |
maxversiontested | 不 | |
識別碼 | 是的 | |
相依性 | 不 | |
dependentAssembly | 不 | |
檔案 | 不 | |
名稱 | 是的 | |
hashalg | 不 | |
哈希 | 不 | |
啟用的Class | 不 | |
名稱 | 是的 | |
threadingModel | 是的 | |
activeCodePage | 不 | |
autoElevate | 不 | |
disableTheming | 不 | |
disableWindowFiltering | 不 | |
dpiAware | 不 | |
dpiAwareness | 不 | |
gdiScaling | 不 | |
highResolutionScrollingAware | 不 | |
longPathAware | 不 | |
printerDriverIsolation | 不 | |
ultraHighResolutionScrollingAware | 不 | |
msix | 不 | |
heapType | 不 | |
支援的Architectures | 不 | |
trustInfo | 不 |
檔案位置
可能的話,您應該將應用程式指令清單內嵌為應用程式 .exe
檔案中的資源,或 .dll
。 如果您無法這麼做,您可以將應用程式指令清單檔放在與 .exe
或 .dll
相同的目錄中。
檔名
依照慣例,應用程式指令清單應該與應用程式的可執行檔同名,並附加 .manifest
擴展名。
例如,參考 example.exe
或 example.dll
的應用程式指令清單應該使用下列檔名語法(如果 資源標識碼 為 1,則可以省略語法 <資源識別符> 區段)。
example.exe。<資源標識碼>.manifest
example.dll。<資源標識碼>.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 元素具有下列屬性。 它沒有子元素。
屬性 | 描述 |
---|---|
類型 | 指定應用程式或元件類型。 值必須 win32 ,而且全都以小寫為單位。 必填。 |
名稱 | 唯一命名應用程式或元件。 針對名稱使用下列格式:Organization.Division.Name 。 例如,Microsoft.Windows.mysampleApp 。 必填。 |
語言 | 識別應用程式或元件的語言。 如果應用程式或元件是特定語言,請指定 DHTML 語言程式代碼。 在 assemblyIdentity,用於全球使用的應用程式(語言中性)省略語言屬性。 在 assemblyIdentity,用於全球使用(語言中性)的元件,會將語言的值設定為 * 。 自選。 |
processorArchitecture | 指定處理器。 有效值包括 x86 、amd64 、arm 和 arm64 。 您也可以指定 * ,以確保所有平台都設為目標。 自選。 |
版本 | 指定應用程式或元件版本。 使用四部分版本格式: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
支援的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 中 識別子 屬性行為的相關信息,請參閱 Windows 8 和 Windows Server 2012 相容性 Cookbook。 下列 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 元素會指定應用程式從應用程序支援的最高版本開始測試的 Windows 版本。 您可以在這裏 找到完整的版本集。 這是供使用 XAML Islands 且未部署在 MSIX 套件中的傳統型應用程式使用。 Windows 10 版本 1903 和更新版本支援這個專案。
maxversiontested 元素具有下列屬性。 它沒有子元素。
屬性 | 描述 |
---|---|
識別碼 | 將 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 都必須位於一個 相依性內。 它沒有屬性。
檔
指定應用程式私用的檔案。 自選。
檔案 專案具有下表所示的屬性。
屬性 | 描述 |
---|---|
名稱 | 檔案的名稱。 例如,Comctl32.dll。 必填。 |
hashalg | 用來建立檔案哈希的演算法。 此值應該是SHA1。 自選。 |
哈希 | 依名稱參考之檔案的哈希。 根據哈希演算法,長度的十六進位字串。 自選。 |
activatableClass
允許非封裝傳統型應用程式使用使用者定義的 Windows 執行時間 (WinRT) 元件。 Windows 10 版本 1903 和更新版本支援這個專案。 如需詳細資訊,請參閱本文 。
activatableClass 元素必須位於 命名空間 urn:schemas-microsoft-com:winrt.v1
。
activatableClass 元素具有下列屬性。
屬性 | 描述 |
---|---|
名稱 | 指定可啟動類別的類別識別碼。 必填。 |
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: 如果 dpiAware 元素存在,則會忽略 dpiAware 元素。 如果您想要為 Windows 10 版本 1607 指定與舊版作系統不同的行為,您可以將這兩個元素包含在指令清單中。
下表描述根據 dpiAware 元素及其包含之文字而產生的行為。 元素內的文字不區分大小寫。
dpiAware 項目的狀態 | 描述 |
---|---|
缺席 | 目前進程預設為 dpi 未察覺。 您可以呼叫 setProcessDpiAwarenessSetProcessDpiAwareness 或 SetProcessDPIAware 函式,以程式設計方式變更此設定。 |
包含 “true” | 目前的程式是系統 dpi 感知。 |
包含 “false” |
Windows Vista、Windows 7 和 Windows 8: 此行為與不存在 dpiAware 時的行為相同。 Windows 8.1 和 Windows 10: 目前行程未察覺,您無法呼叫 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: 目前行程未察覺,您無法呼叫 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 未察覺。 您可以呼叫 setProcessDpiAwarenessSetProcessDpiAwareness 或 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 體驗。
您可以透過程式設計方式變更此設定,方法是呼叫 SetThreadDpiAwarenessContext,或使用 DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
值 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
指定具有目前應用程式外部位置之套件的身分識別資訊(請參閱 使用外部位置封裝來授與套件身分識別)。 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) 如何影響您的應用程式。
要求的執行層級是使用 requestedExecutionLevel 的 層級 属性來指定 trustInfo 元素 子代。 層級 允許的值為:
價值 | 描述 |
---|---|
asInvoker | 應用程式會以與啟動它的進程相同的許可權等級執行。 您可以選取 [以系統管理員身分執行] ,將應用程式提升為較高的許可權等級。 |
requireAdministrator | 應用程式會使用系統管理員許可權執行。 啟動應用程式的用戶必須是Administrators群組的成員。 如果開啟程式未以系統管理許可權執行,系統會提示輸入認證。 |
highAvailable | 應用程式會以最高許可權等級執行。 如果啟動應用程式的使用者是 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>