首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

Vista/Win7/Win10+ 透過 Manifest 讓 VC++ 應用程式自動提權 (UAC 管理員權限)

     編輯:VC 教學

Windows Vista 引入 UAC (User Account Control),標準權限進程無法寫入 Program Files、HKEY_LOCAL_MACHINE、系統目錄等受保護位置。VC++ 編譯的應用程式若需管理員權限,必須內嵌 Manifest 聲明 requireAdministrator,系統啟動時自動彈出 UAC 同意提示並提權。

操作步驟 (Visual Studio 6.0 / 2005+ 通用)

1. 專案資源新增 Custom Resource

  • 資源視圖右鍵 Add Resource → 選 Custom → New。
  • Resource Type 輸入 24 (即 RT_MANIFEST)。
  • 資源 ID 設為 1 (系統預設查找 ID 1)。

2. 貼上 Manifest XML 內容



  
  
    
      
        
      
    
  

3. 重新編譯

編譯後 EXE 圖標右下角會出現 盾牌圖標,雙擊執行自動彈出 UAC 對話框 (「允許此應用對你的裝置進行變更嗎?」),點「是」以管理員權限運行。

level 參數可選值

進階:UI Access (uiAccess="true")

  • 允許程式繞過 UIPI (User Interface Privilege Isolation) 與更高完整性視窗互動 (如模擬輸入、讀取高權限視窗內容)。
  • 嚴格要求: 1) 必須簽名 (代碼簽章證書) 2) 安裝於系統目錄 (Program Files, Windows\System32) 3) Manifest uiAccess="true"。一般應用 不建議開啟。

VS2005+ 圖形化配置 (無需手動 XML)

專案右鍵 Properties → Linker → Manifest File → UAC Execution Level 選 requireAdministrator,IDE 自動生成/內嵌 Manifest。

常見問題

  1. Vista/Win7 上測試正常,XP 報錯: XP 無 UAC,Manifest 被忽略,不影響運行。
  2. 子進程繼承權限: CreateProcess 啟動的子進程預設繼承父進程完整性等級 (同為管理員)。
  3. ClickOnce/安裝程式: 安裝程式本身需提權,安裝後的應用若需提權仍需自身 Manifest。
  4. 調試: VS 調試器需以管理員身份啟動,否則附加到提權進程會失敗。

內嵌 Manifest 是現代 Windows 應用程式獲取管理員權限的標準、唯一正規途徑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
值行為
asInvoker以調用者權限運行 (標準用戶),不提權 (預設無 Manifest 時行為)。
highestAvailable取得調用者能獲得的最高權限 (管理員組用戶提權,標準用戶不提權)。
requireAdministrator強制要求管理員權限,標準用戶需輸入管理員帳密。