Vista 引入 UAC (User Account Control),需管理員權限的操作 (寫入 Program Files、註冊表 HKLM、服務控制、磁碟分割等) 必須提升權限。Manifest 中宣告 requireAdministrator 可讓執行檔啟動時自動彈出 UAC 提示,圖示上會出現盾牌圖示。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="MyApp.exe"
type="win32"
/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
level 可選值:
asInvoker — 以呼叫者權限執行 (預設,不彈 UAC)highestAvailable — 取得呼叫者能取得的最高權限requireAdministrator — 強制要求管理員權限 (彈 UAC)CREATEPROCESS_MANIFEST_RESOURCE_ID)
mt.exe -manifest MyApp.exe.manifest -outputresource:MyApp.exe;1
可整合至專案 Post-Build Event 自動化。
專案屬性 → Linker → Manifest File → UAC Execution Level → Require Administrator。IDE 會自動產生並嵌入 Manifest。
mt.exe -inputresource:MyApp.exe;1 -out:check.manifest 查看嵌入內容processorArchitecture 改為 amd64 或 X64uiAccess="true" (需簽章且放在安全路徑)VC6 專案範例:含手動加入 Manifest 資源步驟截圖、mt.exe 批次檔與編譯後驗證截圖。