但是,很久以來(lái),Windows的用戶(hù)一直都在使用管理權限運行。因此,軟件通常都開(kāi)發(fā)為使用管理帳戶(hù)運行,并且(通常無(wú)意間)依賴(lài)于管理權限。為了讓更多軟件能夠使用標準用戶(hù)權限運行,并且幫助開(kāi)發(fā)人員編寫(xiě)能夠使用標準用戶(hù)權限正常運行的應用程序,Windows Vista 引入了用戶(hù)帳戶(hù)控制 (UAC)。UAC集成了一系列技術(shù),其中包括文件系統和注冊表虛擬化、受保護的系統管理員 (PA) 帳戶(hù)、UAC 提升權限提示,以及支持這些目標的 Windows完整性級別。我在我的會(huì )議演示文稿和 TechNet 雜志UAC 內部信息一文中詳細討論了這些內容。
Windows 7 沿用了 UAC 的目標,基礎技術(shù)相對未做改變。但是,它引入了 UAC 的 PA 帳戶(hù)可以運行的兩種新模式,以及某些內置Windows 組件的自動(dòng)提升機制。在此文章中,我將論述推動(dòng) UAC 技術(shù)發(fā)展的因素、重新探討 UAC和安全性之間的關(guān)系、描述這兩種新模式,并介紹自動(dòng)提升的具體工作方式。請注意,此文章中的信息反映了 Windows 7預發(fā)布版本的行為,該行為在許多方面與 beta 版有所不同。
UAC 技術(shù)
UAC 技術(shù)的最基本元素和直接效益在于它能使標準用戶(hù)更方便地使用 Windows。演示示例展示了 Windows XP 和 WindowsVista 上有關(guān)設置時(shí)區的權限要求的不同之處。在 Windows XP上,更改時(shí)區需要管理權限,實(shí)際上,即使是使用時(shí)間/日期控制面板小程序查看時(shí)區也需要管理權限。
這是因為 Windows XP 未將更改時(shí)間(安全敏感的系統操作)與更改時(shí)區(只是影響時(shí)間的顯示方式)區分開(kāi)來(lái)。在 Windows Vista(和Windows7)中,更改時(shí)區不是一項管理操作,并且時(shí)間/日期控制面板小程序也將管理操作與標準用戶(hù)操作進(jìn)行了分隔。僅僅這一項更改就讓許多企業(yè)能夠為出差的用戶(hù)配置標準用戶(hù)帳戶(hù),因為用戶(hù)將能夠調整時(shí)區來(lái)反映他們的當前位置。Windows 7 進(jìn)一步做出了改進(jìn),比如刷新系統的 IP 地址、使用Windows Update 來(lái)安裝可選的更新和驅動(dòng)程序、更改顯示 DPI,以及查看標準用戶(hù)可訪(fǎng)問(wèn)的當前防火墻設置。
文件系統和注冊表虛擬化在后臺工作,可以幫助許多無(wú)意間使用管理權限的應用程序在沒(méi)有管理權限的情況下也能正常運行。對于不必要地使用管理權限而言,最常見(jiàn)的情況是將應用程序設置或用戶(hù)數據存儲在注冊表或文件系統中系統所使用的區域內。舉例來(lái)說(shuō),某些舊版應用程序將其設置存儲在注冊表的系統范圍部分(HKEY_LOCAL_MACHINE\Software),而不是每用戶(hù)部分(HKEY_CURRENT_USER\Software),而注冊表虛擬化會(huì )將嘗試寫(xiě)入系統位置的操作轉到 HKEY_CURRENT_USER(HKCU) 中的位置,同時(shí)保持應用程序兼容性。
設計 PA 帳戶(hù)的目的是為了鼓勵開(kāi)發(fā)人員將應用程序編寫(xiě)為只需要標準用戶(hù)權限,同時(shí)使盡可能多的在管理組件和標準用戶(hù)組件之間共享狀態(tài)的應用程序能夠繼續工作。默認情況下,Windows Vista 或 Windows7系統上的第一個(gè)帳戶(hù)(在 Windows 的早期版本上為完全權限管理員帳戶(hù))是 PA 帳戶(hù)。PA用戶(hù)執行的任何程序都使用標準用戶(hù)權限運行,除非用戶(hù)明確提升了應用程序,即授予應用程序管理權限。諸如安裝應用程序和更改系統設置等用戶(hù)活動(dòng)會(huì )觸發(fā)提升權限提示。這些提升權限提示是最顯著(zhù)的 UAC 技術(shù),表現形式為切換到一個(gè)包含允許/取消對話(huà)框的屏幕,背景為灰色的桌面快照。
在安裝之后創(chuàng )建的帳戶(hù)是標準用戶(hù)帳戶(hù),默認情況下,這些帳戶(hù)通過(guò)一個(gè)“即時(shí)權限提升”提示提供提升功能,該提示要求提供將用于授予管理權限的管理帳戶(hù)的憑據。利用這一便捷功能,只要共享家庭計算機的家庭成員或更注重安全的使用標準用戶(hù)帳戶(hù)的用戶(hù)知道管理帳戶(hù)的密碼,他們就能夠用管理權限來(lái)運行應用程序,而不必手動(dòng)切換到其他用戶(hù)登錄會(huì )話(huà)。此類(lèi)應用程序的常見(jiàn)示例包括安裝程序以及家長(cháng)控制配置。
在啟用了 UAC后,所有用戶(hù)帳戶(hù)(包括管理帳戶(hù))都將使用標準用戶(hù)權限運行。這意味著(zhù),應用程序開(kāi)發(fā)人員必須考慮他們的軟件默認情況下將沒(méi)有管理權限這一事實(shí)。這應會(huì )提醒他們將其應用程序設計為使用標準用戶(hù)權限工作。如果應用程序或其功能的某些部分需要管理權限,它可以利用提升機制來(lái)允許用戶(hù)解鎖該功能。通常,應用程序開(kāi)發(fā)人員只需進(jìn)行少許更改就可讓其應用程序使用標準用戶(hù)權限正常工作。如有關(guān) UAC 的 E7 博客文章所述,UAC成功地改變了開(kāi)發(fā)人員編寫(xiě)軟件的方式。
提升權限提示的另一個(gè)優(yōu)點(diǎn)是:它們能夠在軟件想要對系統進(jìn)行更改時(shí)“通知”用戶(hù),并使用戶(hù)有機會(huì )來(lái)阻止這種情況。例如,如果用戶(hù)不信任或不想允許修改系統的軟件包要求管理權限,則它們可以拒絕提示。
提升和惡意軟件安全性
UAC 的主要目標是讓更多用戶(hù)能夠使用標準用戶(hù)權限運行。但是,其中一項 UAC技術(shù)看起來(lái)像是安全功能:許可提示。許多人認為,因為軟件必須要求用戶(hù)授予其管理權限,因此他們能夠防止惡意軟件獲得管理權限。提示是一種視覺(jué)暗示,它僅為其所述操作獲取管理權限,除此之外,用戶(hù)還可以切換到不同桌面來(lái)顯示提升對話(huà)框,以及使用 Windows 完整性機制,包括用戶(hù)界面特權隔離(UIPI),這些都使人們更加堅信這一理念。
正如在 Windows Vista推出之前我們所談到的,提升的主要目的不是安全性,而是其方便性:如果用戶(hù)必須通過(guò)登錄到管理帳戶(hù)或通過(guò)“快速用戶(hù)切換”切換到管理帳戶(hù),從而切換帳戶(hù)以執行管理操作,則大多數用戶(hù)都只會(huì )切換一次,而不會(huì )切換回來(lái)。更改應用程序開(kāi)發(fā)人員進(jìn)行設計所針對的環(huán)境將不會(huì )有進(jìn)展。那么,安全桌面和 Windows完整性機制的目的是什么?
為提示切換到不同桌面的主要原因是:標準用戶(hù)軟件無(wú)法“欺騙”提升權限提示,例如,它們無(wú)法通過(guò)在對話(huà)框上的發(fā)布者名稱(chēng)上繪圖來(lái)欺騙用戶(hù),讓用戶(hù)認為是 Microsoft或另一個(gè)軟件供應商(而不是這些軟件)生成了提示,從而欺騙提升權限提示。這種替代桌面稱(chēng)為“安全桌面”,因為它是系統(而不是用戶(hù))所擁有的,就像系統顯示 Windows 登錄對話(huà)框的桌面一樣。
使用其他桌面還有一個(gè)重要目的,就是為了實(shí)現應用程序兼容性:在正在運行其他用戶(hù)擁有的應用程序的桌面上,如果內置輔助功能軟件(比如屏幕鍵盤(pán))能夠正常工作,那么此時(shí)就有一個(gè)第三方軟件不能正常工作。當本地系統帳戶(hù)擁有的提升對話(huà)框顯示在用戶(hù)擁有的桌面上時(shí),該軟件將無(wú)法正常工作。
Windows 完整性機制和 UIPI的設計目的是在提升的應用程序周?chē)⒁坏辣Wo性屏障。它最初的目標其中之一是防止軟件開(kāi)發(fā)人員投機取巧,利用已經(jīng)提升的應用程序來(lái)完成管理任務(wù)。使用標準用戶(hù)權限運行的應用程序無(wú)法將合成鼠標或鍵盤(pán)輸入發(fā)送到提升的應用程序中,以使應用程序執行其指令,也無(wú)法將代碼注入提升的應用程序以執行管理操作。
Windows 完整性機制和 UIPI 在 Windows Vista 中用于保護模式 Internet Explorer,使得感染 IE的運行實(shí)例的惡意軟件更難于修改用戶(hù)帳戶(hù)設置,例如,將本身配置為在每次用戶(hù)登錄時(shí)啟動(dòng)。盡管 Windows Vista的一個(gè)早期設計目標是使用帶有安全桌面的提升、Windows 完整性機制和UIPI,在使用標準用戶(hù)權限和管理權限運行的軟件之間建立一個(gè)堅不可摧的屏障(稱(chēng)為安全邊界),但由于以下兩個(gè)原因,而導致該目標未能實(shí)現,并隨之被放棄:可用性和應用程序兼容性。

圖 1 顯示可執行文件的名稱(chēng)。
首先,考慮提升對話(huà)框本身。它顯示將被授予管理權限的主要可執行文件的名稱(chēng)和發(fā)布者。遺憾的是,盡管越來(lái)越多的軟件發(fā)布者為其代碼添加了數字簽名,但仍然有一些軟件發(fā)布者沒(méi)有這樣做,并且還有許多未添加簽名的舊版應用程序。對于未簽名的軟件而言,提升對話(huà)框只會(huì )顯示可執行文件的文件名,因此,對于某些惡意軟件(例如,已采用用戶(hù)帳戶(hù)運行并且正在監視未簽名 Setup.exe 應用程序安裝程序的提升)而言,將能夠將可執行文件替換為惡意的Setup.exe,而用戶(hù)卻一無(wú)所知(請參閱圖 1)。
其次,該對話(huà)框不會(huì )告知用戶(hù)可執行文件在啟動(dòng)時(shí)將會(huì )加載哪些DLL。如果可執行文件位于用戶(hù)可以控制的目錄中,則使用用戶(hù)標準權限運行的惡意軟件將能夠替換該位置中軟件將使用的任何關(guān)聯(lián)DLL。此外,惡意軟件可以使用并行功能,使可執行文件加載應用程序或系統 DLL的惡意版本。并且,除非用戶(hù)警惕地單擊詳細信息按鈕,并仔細查看為提升可執行文件列出的文件路徑,否則惡意軟件可以將可執行文件復制到名稱(chēng)類(lèi)似的位置,例如,\ProgramFiles\Vendor\Application.exe(注意應為“ProgramFiles”的內容中缺少的空格),在該位置中,惡意軟件將可控制應用程序加載哪些 DLL。在圖 2 中,我已將 Microsoft網(wǎng)絡(luò )監視器的一個(gè)組件復制到用戶(hù)創(chuàng )建的 C:\ProgramFiles 目錄(用戶(hù)可控制該目錄),并啟動(dòng)了該組件。

圖 2 已啟動(dòng)的 Microsoft 網(wǎng)絡(luò )監視器組件的副本。
最后,為了實(shí)現應用程序兼容性,提升的應用程序與標準用戶(hù)環(huán)境共享實(shí)質(zhì)性狀態(tài),惡意應用程序可以使用該狀態(tài)來(lái)影響提升的應用程序的行為。就這一點(diǎn)而言,最直觀(guān)的示例就是用戶(hù)的注冊表配置文件 HKEY_CURRENT_USER(HKCU)。該配置文件是共享的,因為用戶(hù)希望他們作為標準用戶(hù)注冊的設置和擴展能夠在提升的應用程序中工作。惡意軟件可以使用 HKCU中注冊的外殼擴展來(lái)加載到使用任何外殼瀏覽對話(huà)框(比如“打開(kāi)文件”和“保存文件”)的已提升應用程序中。其他各種狀態(tài)也是共享的,特別是基本命名對象命名空間,應用程序將在其中創(chuàng )建同步和共享內存對象。舉例來(lái)說(shuō),惡意軟件可以利用該共享來(lái)劫持提升的應用程序使用的共享內存對象,從而對應用程序和系統造成危害。
至于 Windows完整性機制,由于我前面提到的提升問(wèn)題,因此它作為屏障的有效性是有限的,而它還存在由于應用程序兼容性而導致的限制。舉例來(lái)說(shuō),UIPI不會(huì )阻止標準用戶(hù)應用程序在桌面上繪圖,這一點(diǎn)可能會(huì )被用來(lái)欺騙用戶(hù),采用為惡意軟件授予管理權限的方式來(lái)與提升的應用程序交互。同時(shí),Windows完整性機制也不能跨網(wǎng)絡(luò )應用。采用 PA 帳戶(hù)運行的標準用戶(hù)應用程序將能訪(fǎng)問(wèn) PA帳戶(hù)具有管理權限的遠程系統上的系統資源。如果解決這些限制,將會(huì )對應用程序兼容性造成很大影響。盡管如此,我們一直在探尋提高系統安全性(例如,改善保護模式 IE),同時(shí)解決應用程序兼容性問(wèn)題并與軟件開(kāi)發(fā)人員密切配合的方法。
那么,當您在啟用了 UAC 的情況下采用 Windows Vista PA帳戶(hù)運行時(shí),您將得到什么程度的惡意軟件防護?首先,請記住,要使任何這種情況發(fā)生,惡意軟件首先必須進(jìn)入系統并且開(kāi)始執行。Windows具有許多深層防御功能,其中包括數據執行保護 (DEP)、地址空間加載隨機化 (ASLR)、保護模式 IE、IE 8 瀏覽器 SmartScreen 篩選器,以及可以幫助防止惡意軟件進(jìn)入系統并運行的 Windows Defender。
至于惡意軟件通過(guò)某種方式成功進(jìn)入系統的情況,由于惡意軟件作者(比如合法的開(kāi)發(fā)人員)假設用戶(hù)使用管理權限運行,因此大多數惡意軟件將無(wú)法正常工作。僅這一點(diǎn)可以被視為一種安全優(yōu)勢。但是,已進(jìn)入系統并且設計為可利用這些機會(huì )的惡意軟件將能夠在用戶(hù)第一次提升時(shí)獲得管理權限 —但惡意軟件甚至不需要等待“實(shí)際”提升,因為它可以促成提升,而這種提升甚至可以欺騙最注重安全的用戶(hù)。我已經(jīng)在我的 UAC 內部信息和Windows 安全邊界演示文稿中公開(kāi)演示過(guò)惡意軟件如何能夠劫持提升過(guò)程(演示位于安全邊界討論的 1 分 03秒處)。但是,請記住,如果惡意軟件已經(jīng)開(kāi)始運行,它只需使用標準用戶(hù)權限就可達到惡意軟件想要達到的大部分目的,其中包括將本身配置為在每次用戶(hù)登錄時(shí)運行、竊取或刪除所有用戶(hù)的數據,或者甚至成為僵尸網(wǎng)絡(luò )的一部分。
Windows 7 中的不同之處
我在前面提過(guò),Windows 7 中的某些操作現在可由標準用戶(hù)執行,但正如有關(guān) UAC 的 E7博客文章所述,我們還認識到,我們可以在不影響 UAC 的目標的情況下使 Windows體驗更加流暢。許多用戶(hù)抱怨說(shuō),當他們執行常見(jiàn)的系統管理操作時(shí),Windows Vista 本身會(huì )頻繁地請求管理權限。使 Windows能夠針對標準用戶(hù)環(huán)境正常工作對我們最有利,因為這樣將為我們的客戶(hù)帶來(lái)利益。但是,提升權限提示并沒(méi)有告誡或鼓勵我們這樣做,而是會(huì )強制用戶(hù)在絕大多數用戶(hù)都不理解的對話(huà)框中再次單擊。因此,Windows 7開(kāi)始從默認 Windows 體驗中最大程度地減少這些提示,并使以管理員身份運行的用戶(hù)能夠控制其提示體驗。
為此,我們進(jìn)一步重構了系統,這樣,擁有標準用戶(hù)權限的用戶(hù)將能執行更多任務(wù),并且,我們減少了若干多提示方案(例如,在 IE 中安裝ActiveX 控件)中的提示數量。Windows 7 還引入了兩種新的 UAC 操作模式,可以在新的 UAC 配置對話(huà)框(請參閱圖3)中選擇這些模式。通過(guò)轉到控制面板,單擊“用戶(hù)帳戶(hù)”,單擊“用戶(hù)帳戶(hù)”,然后單擊“更改用戶(hù)帳戶(hù)控制設置”,您可以打開(kāi)該對話(huà)框。(您也可以通過(guò)單擊提升權限提示上的“顯示這些通知時(shí)進(jìn)行更改”鏈接或通過(guò)訪(fǎng)問(wèn)“操作中心”來(lái)進(jìn)入該對話(huà)框。)

圖 3 可在新的 UAC 配置對話(huà)框中選擇的兩種新 UAC 操作模式。
圖 3 中顯示的默認設置就是其中一個(gè)新級別。與位于滑塊頂部并相當于 Windows Vista 中的默認模式的“始終通知”不同,只有當非Windows 可執行文件請求提升時(shí),Windows 7 才會(huì )默認提示用戶(hù);針對非 Windows 提升的行為與 Windows Vista相同。
下面接下來(lái)的滑塊位置是第二個(gè)新設置,它的標簽相同,只是后面附加了“(不降低桌面亮度)”。該模式和默認模式的唯一不同之處在于:提示將出現在用戶(hù)的桌面(而不是安全桌面)上。這樣的好處是:用戶(hù)可以在提示處于活動(dòng)狀態(tài)的同時(shí)與桌面交互,但正如我之前提到的,將會(huì )出現第三方輔助功能軟件可能無(wú)法在該提示對話(huà)框上正常工作的風(fēng)險。
最后,如果選擇最底部的滑塊位置,將會(huì )完全禁用 UAC 技術(shù),這樣,所有采用 PA帳戶(hù)運行的軟件都將使用完全管理權限運行、文件系統和注冊表虛擬化將被禁用,并且保護模式 IE 將被禁用。盡管采用此設置時(shí)將沒(méi)有提示,但保護模式IE 的損失是此模式的一個(gè)很大的弊端。
自動(dòng)提升
在采用中間兩種設置時(shí),之所以(大多數)Windows 可執行文件的提升不會(huì )產(chǎn)生提示,其原因在于系統“自動(dòng)提升”了 Windows可執行文件。首先,在此上下文中,Windows 對 Windows可執行文件的定義是什么?答案取決于若干因素,但有兩個(gè)條件必須得到滿(mǎn)足:該可執行文件必須經(jīng)過(guò) Windows Publisher的數字簽名,Windows Publisher 是用于對 Windows 附帶的所有代碼進(jìn)行簽名的證書(shū)(僅由 Microsoft進(jìn)行簽名是不夠的,因此 Windows 未附帶的 Microsoft軟件不包括在內);并且該可執行文件必須位于其中一個(gè)為數不多的“安全”目錄中。安全目錄是指標準用戶(hù)無(wú)法修改的目錄,并且它們包括%SystemRoot%\System32(例如,\Windows\System32)及其大多數子目錄、%SystemRoot%\Ehome,以及 %ProgramFiles% 下的少許目錄(其中包括 Windows Defender 和 Windows 日記本)。
同時(shí),視可執行文件是普通 .exe、Mmc.exe 還是 COM 對象而定,自動(dòng)提升還有一些附加規則。如果 .exe 種類(lèi)的Windows 可執行文件(如前面所定義)在其清單中指定了 autoElevate 屬性,這些可執行文件將會(huì )自動(dòng)提升。應用程序也將在該清單中向UAC 指明它們需要管理權限。此處的 Sysinternals Sigcheck 實(shí)用工具通過(guò)命令“sigcheck –m%systemroot%\system32\taskmgr.exe”來(lái)轉儲任務(wù)管理器 (Taskmgr.exe)的清單,該清單顯示任務(wù)管理器已加入自動(dòng)提升,如圖 4 所示。

圖 4 autoElevate 屬性
在目錄樹(shù)中查找自動(dòng)提升可執行文件的一種簡(jiǎn)便方法是,通過(guò)如下所示的命令使用 Sysinternals Strings 實(shí)用工具:
strings –s *.exe | findstr /i autoelevate
還有一個(gè)硬編碼列表,其中包含獲得自動(dòng)提升處理的 Windows 可執行文件。這些 Windows 可執行文件也并非是 Windows 7附帶的內部文件,因此它們必須能夠在 autoexecute 屬性會(huì )導致錯誤的舊版系統上運行。列表中包括Migwiz.exe(遷移向導)、Pkgmgr.exe(程序包管理器)和 Spinstall.exe(Service Pack 安裝程序)。
將對 Microsoft 管理控制臺 Mmc.exe 進(jìn)行特殊處理,因為它承載了多個(gè)以 DLL 形式實(shí)現的系統管理管理單元。Mmc.exe通過(guò)命令行啟動(dòng),該命令行指定一個(gè) .MSC 文件,其中列出要加載的管理單元 MMC。Mmc.exe 將在通過(guò) PA 帳戶(hù)啟動(dòng)時(shí)請求管理權限,當Windows 發(fā)現這一點(diǎn)時(shí),它將驗證 Mmc.exe 是否為 Windows 可執行文件,然后檢查 .MSC。為了獲得自動(dòng)提升資格,.MSC文件必須滿(mǎn)足 Windows 可執行文件條件(由 Windows 在安全的位置中簽名),并且必須列在自動(dòng)提升 .MSC的內部列表中。該列表實(shí)際上包括 Windows 附帶的所有 .MSC 文件。
最后,COM 對象可以通過(guò)創(chuàng )建一個(gè)名為 Elevation 的子項(其名為 Enabled 的值設置為1),利用其注冊表項中的注冊表值來(lái)指定需要管理權限。圖 5顯示了外殼的“復制”/“移動(dòng)”/“重命名”/“刪除”/“鏈接”對象的注冊表項,當用戶(hù)對其帳戶(hù)沒(méi)有權限訪(fǎng)問(wèn)的位置執行文件系統操作時(shí),資源管理器將使用該對象。

圖 5 外殼注冊表項
要使 COM 對象能夠自動(dòng)提升,它還必須是 Windows 可執行文件,并且必須已由 Windows可執行文件進(jìn)行實(shí)例化。(不過(guò),無(wú)需將實(shí)例化可執行文件標記為自動(dòng)提升。)例如,當您使用資源管理器通過(guò) PA 帳戶(hù)在 %ProgramFiles%目錄中創(chuàng )建目錄時(shí),操作將會(huì )自動(dòng)提升,因為 COM 對象請求了提升、對象的 DLL 是 Windows 可執行文件,并且資源管理器是Windows 可執行文件。
自動(dòng)提升與 UAC 的目標
那么,所有特殊自動(dòng)提升規則背后的原理是什么?選擇要自動(dòng)提升哪些程序以及不自動(dòng)提升哪些程序是由以下問(wèn)題確定的:“應用程序開(kāi)發(fā)人員是否能夠利用自動(dòng)提升無(wú)意間或不費力地依賴(lài)于管理權限?”由于可以使用 Cmd.exe通過(guò)命令行參數來(lái)執行批處理腳本,并且普通用戶(hù)不需要以提升方式運行命令提示符(大多數用戶(hù)甚至不知道命令提示符是什么),因此未將 Cmd.exe列入自動(dòng)提升的清單。同樣,承載控制面板插件的可執行文件 Rundll32.exe 在 Windows 7的最終版本中也未自動(dòng)提升,因為對于任何常見(jiàn)管理任務(wù)而言,并不需要對其進(jìn)行提升,并且,如果 Rundll32.exe進(jìn)行了自動(dòng)提升,則它通過(guò)命令行承載任意 DLL 的能力將會(huì )導致開(kāi)發(fā)人員要求使用管理員權限,而自己卻未意識到。
自 Windows Vista 測試版發(fā)布以來(lái),最終用戶(hù)一直在要求 Windows提供一種向自動(dòng)提升列表中添加任意應用程序的方法。經(jīng)常被提及的原因是:他們常用的某個(gè)第三方應用程序強制他們不斷單擊提升權限提示,而這已經(jīng)成為他們日常工作的一部分。就像 Windows Vista 一樣,Windows 7并未提供這種功能。我們理解這種操作非常繁瑣,并且可能有這些應用程序無(wú)法在沒(méi)有管理權限的情況下運行的合理原因,但開(kāi)發(fā)人員將會(huì )避免將其代碼修正為使用標準用戶(hù)權限,而這樣的風(fēng)險太高。即使有關(guān)哪些應用程序進(jìn)行自動(dòng)提升的列表只能由管理員訪(fǎng)問(wèn),但開(kāi)發(fā)人員只需更改其要求一次性提升的應用程序安裝程序,就可將其應用程序添加到列表中。作為替代,我們選擇進(jìn)行投資來(lái)進(jìn)行培訓并與應用程序開(kāi)發(fā)人員密切合作,以確保其程序能夠以標準用戶(hù)身份正常工作。
很多人發(fā)現,采用 PA 帳戶(hù)通過(guò)標準用戶(hù)權限運行的第三方軟件可以利用自動(dòng)提升來(lái)獲取管理權限。例如,軟件可以使用WriteProcessMemory API 將代碼注入資源管理器,并使用 CreateRemoteThread API來(lái)執行該代碼,這種技術(shù)稱(chēng)為 DLL 注入。由于代碼在資源管理器(一種 Windows 可執行文件)中執行,因此它可以利用自動(dòng)提升的 COM對象(比如“復制”/“移動(dòng)”/“重命名”/“刪除”/“鏈接”對象)來(lái)修改系統注冊表項或目錄,并為軟件授予管理權限。如果是這樣,這些步驟將需要蓄意謀劃,而且并非無(wú)關(guān)緊要,因此,與將其軟件修正為使用標準用戶(hù)權限來(lái)運行相比較,我們不相信正當的開(kāi)發(fā)人員會(huì )選擇進(jìn)行這些步驟。事實(shí)上,我們建議任何應用程序開(kāi)發(fā)人員不要依賴(lài)于系統中的提升行為,并且建議應用程序開(kāi)發(fā)人員測試其軟件在標準用戶(hù)模式下運行的情況。
接下來(lái)的發(fā)現是,惡意軟件可以使用同樣的技術(shù)獲取管理權限。同樣,情況確實(shí)如此,但正如我前面指出的,惡意軟件也可以通過(guò)提示的提升來(lái)危害系統。從惡意軟件的角度來(lái)看,Windows 7 的默認模式并不比“始終通知”模式(“Vista 模式”)安全多少,并且,采用管理權限的惡意軟件在Windows 7 的默認模式下運行時(shí),將仍然會(huì )崩潰。
結論
總而言之,UAC 是一組具有一個(gè)整體目標的技術(shù):使用戶(hù)能夠以標準用戶(hù)身份運行。因為對 Windows 進(jìn)行了更改,使標準用戶(hù)能夠執行以前需要管理權限的更多操作,再結合文件和注冊表虛擬化以及提示,從而共同實(shí)現了此目標。最終標準是:默認的 Windows 7 UAC 模式通過(guò)減少提示使 PA 用戶(hù)的體驗更加流暢、允許用戶(hù)控制可以修改其系統的合法軟件,并仍然實(shí)現 UAC 的目標,即讓更多的軟件能夠在沒(méi)有管理權限的情況下運行,并繼續使軟件生態(tài)系統轉變?yōu)榫帉?xiě)能夠使用標準用戶(hù)權限工作的軟件。
聯(lián)系客服