[IADP Series] App 遇到 UAC 時的處理方式

UAC 一向是在 Windows Vista 之後的作業系統的問題,在 Intel AppUp 的應用程式中,可受支援的有 Windows XP 和 Windows 7 (含 32/64bit),如果應用程式需要存取受 UAC 控制的範圍 (ex: application configuration) 時,就會受到 UAC 的影響,而可能會導致 UnauthorizedAccessException 的存取被拒問題。

UAC 一向是在 Windows Vista 之後的作業系統的問題,在 Intel AppUp 的應用程式中,可受支援的有 Windows XP 和 Windows 7 (含 32/64bit),如果應用程式需要存取受 UAC 控制的範圍 (ex: application configuration) 時,就會受到 UAC 的影響,而可能會導致 UnauthorizedAccessException 的存取被拒問題。

而微軟在 Visual Studio 以及 MSDN 中早已提供解決方法,在 Visual Studio 2010 中可以在應用程式專案新增 App Manifest,以強制應用程式使用虛擬儲存區,但 App Manifest 預設是使用 asInvoker 模式,這個模式是以執行應用程式當下的權限為主,並且可以允許使用者以 "系統管理員啟動" 方式取得 Administrator 的權限 (更多 UAC 的對照,可參考 http://msdn.microsoft.com/en-us/library/bb756929.aspx)。

Intel 自己對 UAC 的問題則是列為 Known Issues,文中的第一個就是 UAC 的說明:

image

但據我與 IADP 顧門口級的 Bill Chung 一起測試的經驗來看,將 Visual Studio 2010 App Manifest 預設的 asInvoker 也移除 (或註解掉),執行時應用程式會使用 Virtual Store 來保存應用程式對受 UAC 控制的範圍的存取資訊,讓應用程式不會產生 UnauthorizedAccessException 的錯誤狀況。

這篇文的說明是以經驗為主的,如果以後 Intel 有進一步的解決方式,請以 Intel 發布的為主。

Reference:

App 於 UAC 環境的測試經驗 (Special Thanks to IADP 顧門口級人物 Bill Chung)。