ClickOnce 应用程序的代码访问安全性

ClickOnce 应用程序是基于 .NET Framework 的,受代码访问安全性约束的影响。 因此,了解代码访问安全性的含义并编写相应的 ClickOnce 应用程序是十分重要的。

代码访问安全性是 .NET Framework 中的一种机制,可帮助限制代码访问受保护的资源和操作的权限。 应将 ClickOnce 应用程序的代码访问安全性权限配置为使用适合应用程序安装程序的位置的区域。 大多数情况下,您也可以为受限权限集选择**“Internet”区域,或为较大权限集选择“本地 Intranet”**区域。

默认 ClickOnce 代码访问安全性

ClickOnce 应用程序在客户端计算机上安装或运行时,默认情况下是接收“完全信任”权限。

  • 具有“完全信任”权限的应用程序拥有对资源(如文件系统和注册表)的不受限制的访问权。 这样,恶意代码就可能会利用您的应用程序(和最终用户的系统)。

  • 当应用程序需要“完全信任”权限时,系统可能会提示最终用户将该权限授予此应用程序。 这意味着应用程序不会真正提供 ClickOnce 体验,并且提示可能会给经验不足的用户带来困惑。

    提示

    如果从可移动媒体(如 CD-ROM)安装应用程序,则不会提示用户。 此外,网络管理员还可以配置网络策略,以便用户从受信任的源安装应用程序时不会出现提示。 有关更多信息,请参见受信任的应用程序部署概述

若要限制 ClickOnce 应用程序的权限,您可以将该应用程序的代码访问安全性权限修改为请求最适合应用程序所需权限的区域。 大多数情况下,可以选择要从中部署应用程序的区域。 例如,如果应用程序是一个企业应用程序,则可以使用**“本地 Intranet”区域。 如果应用程序是一个 Internet 应用程序,则可以使用“Internet”**区域。

配置安全权限

应始终将 ClickOnce 应用程序配置为请求适当的区域以限制代码访问安全性权限。 在**“项目设计器”“安全”**页上可以配置安全权限。

**“项目设计器”“安全”页包含一个“启用 ClickOnce 安全设置”**复选框。 当选中此复选框时,安全权限请求会添加到应用程序的部署清单中。 在安装时,如果请求的权限超出了部署应用程序的区域的默认权限,则系统会提示此用户授予权限。 有关更多信息,请参见如何:启用 ClickOnce 安全设置

从不同位置部署的应用程序会授予不同级别的权限,而不进行提示。 例如,当从 Internet 部署应用程序时,此应用程序会接收到限制性较高的权限集。 当从本地 Intranet 进行安装时,此应用程序会接收到更多的权限;当从 CD-ROM 进行安装时,此应用程序会接收到“完全信任”权限。

作为配置权限的第一步,可以从**“安全”页的“区域”**列表中选择一个安全区域。 如果可能会从多个区域部署应用程序,请选择具有最少权限的区域。 有关更多信息,请参见如何:为 ClickOnce 应用程序设置安全区域

可以设置的属性因权限集而异;并非所有权限集都具有可配置的属性。 有关应用程序可请求的权限的完整列表的更多信息,请参见 System.Security.Permissions。 有关如何设置自定义区域的权限的更多信息,请参见如何:设置 ClickOnce 应用程序的自定义权限

调试具有受限权限的应用程序

作为一名开发人员,您很可能会使用“完全信任”权限运行开发计算机。 因此,您在调试应用程序时不会看到用户在使用受限权限运行此应用程序时可能会看到的安全异常。

要捕捉这些异常,必须使用与最终用户相同的权限来调试应用程序。 在**“项目设计器”“安全”**页中,可以启用使用受限权限进行调试。

当使用受限权限调试应用程序时,任何未在**“安全”**页中启用的代码安全性要求都会引发异常。 这时会出现一个异常帮助器,提供有关如何修改代码以防止出现异常的建议。

此外,在编写代码时,代码编辑器中的 IntelliSense 功能将禁用任何未包含在已配置的安全权限中的成员。

有关更多信息,请参见如何:使用受限权限对 ClickOnce 应用程序进行调试

浏览器承载的应用程序的安全权限

Visual Studio 为 Windows Presentation Foundation (WPF) 应用程序提供下列项目类型:

  • WPF Windows 应用程序

  • WPF Web 浏览器应用程序

  • WPF 自定义控件库

  • WPF 服务库

在这些项目类型中,只有 WPF Web 浏览器应用程序承载于 Web 浏览器中,因此需要特殊的部署和安全设置。 这些应用程序的默认安全设置如下所示:

  • 启用 ClickOnce 安全设置

  • 这是不完全可信的应用程序

  • “Internet 区域”(已选定 WPF Web 浏览器应用程序的默认权限集)

在**“高级安全设置”对话框中,“使用选定权限集调试此应用程序”**复选框已被选中且被禁用。 原因是无法为浏览器承载的应用程序关闭“在区域中调试”。 有关更多信息,请参见 WPF XAML 浏览器应用程序概述

请参见

任务

如何:启用 ClickOnce 安全设置

如何:为 ClickOnce 应用程序设置安全区域

如何:设置 ClickOnce 应用程序的自定义权限

如何:使用受限权限对 ClickOnce 应用程序进行调试

参考

”项目设计器“ ->“安全”页

概念

保护 ClickOnce 应用程序

受信任的应用程序部署概述