Visual C++應用程序中進行用戶訪問協(xié)議設(shè)置
原創(chuàng)說明文件開始只是簡單地描述執(zhí)行依賴性,之后其應用越來越多。Windows Vista 和 Windows 7 還加入了一些新的說明文件元素:與并行執(zhí)行無關(guān)的給你。隨著軟件虛擬性和應用程序管理功能越來越重要,說明文件的使用也越來越多,用于指定應用程序營運的環(huán)境,滿足其所需的安全和性能。以下為一些較新的設(shè)置,這些設(shè)置可以通過應用程序的說明文件來控制。
應用程序所需的用戶訪問協(xié)議(User Access Control,簡稱 UAC)等級。有些應用程序為了正確地執(zhí)行需要完全的管理員權(quán)限,對于重要的應用程序,說明文件正是一個合適的地方,可以用來請求 Windows 提示用戶權(quán)限的增加。
ClickOnce 應用程序。對于 ClickOnce 應用,這些應用程序具有一種簡單的安裝和升級的生命周期,對傳統(tǒng)的高權(quán)重的 MSI 安裝方式的依賴更少,應用程序自身實際上是由說明文件來描述。除了依賴性的元素,ClickOnce 應用還需要指定 entryPoint 元素和 trustInfo 元素,前者用于詳細地描述運行應用程序所需的執(zhí)行和命令行參數(shù),后者用于詳細描述應用程序安全需求。Visual C++ 2010 不支持 IDE 內(nèi)部集成的 ClickOnce 說明文件,但是在這篇 MSDN 文章中,可以找到所需的詳細步驟。
DPI 虛擬化。如果在操作系統(tǒng)等級上激活了高 DPI 支持,并且應用程序的說明文件未表明該應用程序支持高 DPI,那么 Windows 將 在虛擬窗口中運行應用程序。DPI 虛擬化會造成一些顯示上模糊,好像顯示器使用了不恰當?shù)姆直媛?,因此需要開發(fā)能夠正確處理高 PDI 的應用程序并在說明文件中進行相關(guān)的描述。
兼容設(shè)置。每個版本的 Windows 在操作系統(tǒng)功能方面都存在著各種各樣的改變。這是為了滿足用戶的預期,正如性能和穩(wěn)定性的提升是所有軟件升級的賣點。不幸的是,這些改善造成某些應用程序內(nèi)置了對于以往性能的預期,從而會發(fā)生崩潰或者無法正確的運行,如果這種問題的影響較廣或者受到了很大的關(guān)注,那么用戶以及機構(gòu)對于 Windows 升級的興趣就會顯著地減低。這種情況與最初引入說明文件的 SxS 問題非常類似, 所以說明文件應指定應用程序所預期的操作性版本行為。
為了到達這一目的,Windows 7 引入了一個信息兼容性說明文件,利用該元素可以“選擇加入(opt-in)”的方式使用新的 Windows 7 行為。如果應用程序的說明文件不包含該元素,或者該元素為指定 Windows 7 為支持的操作系,那么將使用的 Window Vista 的行為。SDK 文檔中列出了該設(shè)置所控制的所有功能。激活 Windows 7 行為的實際說明設(shè)置如下:
在 SxS 設(shè)置之外,說明文件中的 UAC 設(shè)置由圖 2 中的 Linker |Manifest 屬性頁面控制。該 UAC 執(zhí)行等級指定了應用程序執(zhí)行所需的許可權(quán)限,而且 UAC Bypass UI Protection 設(shè)置指定了該應用程序是否要求與高許可權(quán)限的桌面窗口,如屏幕鍵盤,進行互動。
Visual C++ 應用程序的 UAC Manifest 設(shè)置