Manifest與Vista下的安全性設定

撰文:吳俊毅 時間:2009/1/3 本篇文章使用Visual Studio 2008 Team System 本文主要探討關於Vista新增的UAC安全性設定,以及如何使用manifest設定檔案使程式具備管理者權限,這個部分牽涉範圍很廣,首先什麼叫做UAC呢,UAC是(User Access Control)的簡稱,意思是”使用者帳戶控制”,在Vista下預設也使用須具備管理者權限才可以執行的相關操作都會跳出一個如下確認的小視窗: 若點選繼續,程式才會繼續執行,否則取消程式的執行,這通常是在Vista下已預設一些動作是需要管理者權限才可以進行的一些動作,即使您已經是以Administrator權限登入,在執行系統管理工具,修改Windows或是Program Files下的檔案,或修改登錄檔,啟動與停止系統服務等等,都會跳出如上的確認對話框,即使您只是要執行諸如mmc.exe或regedit.exe等相關程式也是一樣。 也就是說在Vista下面沒有一個應用程式是具備管理者權限執行的,即使是Windows的殼層,就是俗稱的Shell,也就是Explorer.exe也不具備管理者權限,這樣許多使用者會覺得過於繁瑣,不過筆者倒是認為這是一種極佳的保護機制,如果由一個依附在Explorer.exe執行的病毒一樣會繼承Explorer的權限,甚至只是一個Process當中的Thread要進行一些需授權的動作,均會跳出這個視窗,如果使用者認為現在並未執行這個動作可按下取消便限制病毒不當的一些作業。 OK!太多的UAC細節我想另闢章結來討論好了,本文的重點是,既然Vista下執行的應用程式預設都不具備管理者權限,那如果我們開發的.NET應用程式有些動作是必須以管理者權限執行的,而在User端執行總不能說要User你用滑鼠右鍵自己點選管理者權限執行該程式,或是關閉UAC!那更不妥當,怎麼辦呢,我們的應用程式就是需要以管理者權限執行阿。沒關係,有辦法,讀者在執行一些應用程式時應該有看過這一類的確認視窗: 這個對話框表示這個應用程式需要您的授權成為管理者權限來執行,但如何做呢?在Vista下可對應用程式加上一個manifest檔案告訴Vista,此程式執行須以管理者權限來執行。...