共用方式為


ClickOnce 應用程式的程式碼存取安全性

更新:2007 年 11 月

ClickOnce 應用程式是以 .NET Framework 為基礎,並受到程式碼存取安全性條件約束的限制。因此,有一點很重要的是,您必須了解程式碼存取安全性的含意,並依此撰寫 ClickOnce 應用程式。

程式碼存取安全性是 .NET Framework 的一項機制,能夠協助限制程式碼對受保護之資源和作業的存取。您必須設定 ClickOnce 應用程式的程式碼存取安全性權限,使其僅包含應用程式所需的權限。Visual Studio 會提供用以判斷和設定應用程式權限集合的必要工具。

預設的 ClickOnce 程式碼存取安全性

根據預設,當 ClickOnce 應用程式於用戶端電腦上安裝或執行時,它會收到完全信任的權限。雖然在某些情況下,確實需要「完全信任」的權限,但通常不建議您授與「完全信任」的權限,有兩個重要的原因:

  • 具有「完全信任」權限的應用程式,對於檔案系統和登錄之類的資源,都可以進行無限制的存取。這樣會讓您的應用程式 (以及使用者的系統) 有潛在的惡意程式碼攻擊之風險。

  • 當應用程式需要「完全信任」權限時,使用者便會收到提示要求對應用程式授與權限。這表示應用程式就無法真正提供 ClickOnce 經驗,而且提示可能會使經驗較少的使用者感到困惑。

    注意事項:

    從 CD-ROM 之類的卸除式媒體安裝應用程式時,並不會提示使用者。此外,網路系統管理員可以設定網路原則,這樣當使用者從受信任來源安裝應用程式時,就不會收到提示。如需詳細資訊,請參閱受信任的應用程式部署概觀

基於這些原因,您必須修改應用程式的程式碼存取安全性權限,使其僅包含應用程式所需的權限。

設定安全性權限

您必須將 ClickOnce 應用程式設定為只要求實際需要的程式碼存取安全性權限。您可以在 [專案設計工具] 的 [安全性] 頁面上設定安全性權限。

[專案設計工具] 的 [安全性] 頁面含有 [啟用 ClickOnce 安全性設定] 核取方塊。當選取此核取方塊時,便會將安全性權限要求加入應用程式的部署資訊清單。在安裝時,如果所要求的權限超過應用程式部署來源區域的預設權限,使用者便會收到要求授與權限的提示。如需詳細資訊,請參閱 HOW TO:啟用 ClickOnce 安全性設定

從不同位置部署的應用程式,會被授與不同的權限等級且不出現提示。例如,當應用程式從網際網路部署時,便會收到具有高度限制的一組權限集合。從近端內部網路安裝時,將會收到更多權限。若是從 CD-ROM 安裝,則會收到「完全信任」的權限。

您可以從 [安全性] 頁面的 [區域] 清單中選取安全性區域,以開始設定權限。如果應用程式可能從一個以上的區域部署,請選取具有最小權限的區域。如果您要在開始時不含有任何預設權限,並且根據需求,一次加入一個應用程式所需的權限,請選取 [自訂] 區域。

選取了區域後,[權限] 清單便會更新,顯示該區域的預設權限,已包含的權限會以綠色核取記號表示。如需詳細資訊,請參閱 HOW TO:設定 ClickOnce 應用程式的安全性區域

若要進一步限制權限,您可以選取權限集合並修改其屬性。例如,如果您的應用程式必須顯示 [開啟舊檔] 對話方塊,[FileDialogPermission] 集合就會授與顯示對話方塊的權限。根據預設,這個權限集合會啟用 [開啟舊檔] 和 [另存新檔] 對話方塊。若要修改這點,請按一下 [FileDialogPermission] 集合,按一下 [屬性] 開啟 [權限設定] 對話方塊,並將權限設定為 [只開啟對話方塊]。如需詳細資訊,請參閱 HOW TO:設定 ClickOnce 應用程式的自訂使用權限

注意事項:

根據權限集合,可以設定的屬性會有所不同,並不是所有權限集合都有可設定的屬性。

您也可以排除不需要的權限集合,或是啟用不屬於區域預設權限的權限。若要這麼做,請從權限集合的 [設定] 清單中挑選值。已經修改過的權限都會以粗體文字顯示。如果已經啟用某個權限,而且該權限不是區域預設的一部分,則會將資訊圖示加到 [包含] 核取記號旁邊。

注意事項:

啟用區域預設以外的權限,會讓使用者收到提示,就如本主題先前所描述的。當您啟用額外權限時,都必須修改權限集合,使其僅包含實際需要的權限。

判斷應用程式所需的權限

為了有效設定安全性權限,這可協助您確實了解應用程式所需的權限。您可以使用 [安全性] 頁面所提供的 [使用權限計算機] 工具,分析程式碼並判斷應用程式所需的確實權限。

注意事項:

[使用權限計算機] 工具有一些限制。該工具會執行程式碼的靜態分析,而且無法為晚期繫結程式碼或以動態方式載入的組件判斷所需權限。此外,如果您已經將應用程式設計為,在具有較少權限的環境中執行時,以動態方式修改權限需求,則此工具將會報告最大所需的權限。

在工具分析過您的應用程式之後,所有需要的權限集合都會設定為 [啟用],並以粗體文字顯示。如果啟用的權限不是區域預設的一部分,該權限也會以警告圖示予以標記。如果您要避免提示使用者,就應該檢視這些權限,判斷是否可以修改程式碼,而不再需要這些權限。

如需詳細資訊,請參閱 HOW TO:決定 ClickOnce 應用程式的使用權限

偵錯具有限制權限的應用程式

身為開發人員,您極有可能以「完全信任」權限使用您的開發電腦。因此,當您偵錯應用程式時,就會看不到與使用者以限制權限執行該應用程式時可能看到的相同安全性例外狀況 (Exception)。

為了攔截這些例外狀況,您必須以與使用者相同的權限偵錯應用程式。您可以在 [專案設計工具] 的 [安全性] 頁面中啟用以受限權限偵錯的功能。

以限制權限偵錯應用程式時,在 [安全性] 頁面中未啟用的程式碼安全性要求都會引發例外狀況。例外狀況 Helper 將會出現,提供修改程式碼以避免例外狀況的建議。

此外,在撰寫程式碼時,[程式碼編輯器] 中的 IntelliSense 功能會將已設定之安全性權限所未包含的任何成員都變成灰色。

如需詳細資訊,請參閱 HOW TO:以限制使用權限偵錯 ClickOnce 應用程式

瀏覽器裝載之應用程式的安全性權限

Visual Studio 為 Windows Presentation Foundation (WPF) 應用程式提供下列專案類型:

  • WPF Windows 應用程式

  • WPF Web 瀏覽器應用程式

  • WPF 自訂控制項程式庫

  • WPF 服務程式庫

在這些專案類型中,只有 WPF Web 瀏覽器應用程式是裝載於 Web 瀏覽器,因此需要特殊的部署和安全性設定。這些應用程式的預設安全性設定是:

  • 啟用 ClickOnce 安全性設定

  • 這是部分信任的應用程式

  • 網際網路區域 (選取 WPF Web 瀏覽器應用程式的預設權限集合)

在 [進階安全性設定] 對話方塊中,[以選取的使用權限集合對此應用程式進行偵錯] 核取方塊會選取和停用。這是因為無法對瀏覽器裝載的應用程式關閉 [在區域中偵錯]。

當使用 ClickOnce 部署 WPF Web 瀏覽器應用程式時,它們便會要求特定的權限集合 (儲存在 appname.exe.manifest 檔案中)。這些是程式碼存取安全性網際網路區域權限集合的預設權限,此外還有兩項其他權限:

WebBrowserPermission

MediaPermission

如果您要設定非預設權限,Visual Studio 就會發出警告,說明應用程式正被設定為要求非預設權限。除非安全性原則已推入到目標電腦上,否則安裝便會失敗。

請參閱

工作

HOW TO:啟用 ClickOnce 安全性設定

HOW TO:設定 ClickOnce 應用程式的安全性區域

HOW TO:設定 ClickOnce 應用程式的自訂使用權限

HOW TO:決定 ClickOnce 應用程式的使用權限

HOW TO:以限制使用權限偵錯 ClickOnce 應用程式

概念

ClickOnce 部署和安全性

受信任的應用程式部署概觀

參考

專案設計工具、安全性頁