4

我在一家生产商业产品的公司工作,我们目前正在尝试提供一种解决方案,使我们的一些大客户能够通过 ClickOnce 分发我们应用程序的客户端。

目的是我们的客户将 ClickOnce 安装部署到网络共享,然后通过电子邮件或其他方式向客户发送指向应用程序清单的链接。

我们已经能够成功地将 ClickOnce 安装的生产集成到我们的自动构建中(使用 Mage 命令行工具),然后我们可以在客户端计算机上成功运行实际安装。然而,在安装和启动之后,我们的应用程序在运行时抛出一个 SecurityException,因为它被拒绝访问 FileIOPermission。我们的应用程序需要 FullTrust 权限,但似乎如果执行程序集的 CodeBase 位置是网络共享,则您只被授予 LocalIntranet 权限(不包括 FileIOPermission)。

这里有一篇文章似乎表明这是一个很常见的问题:http: //blogs.msdn.com/shawnfa/archive/2004/12/30/344554.aspx

本文提供了一种使用 CasPol 工具的解决方法,但我们必须在部署环境中的每台客户端计算机上运行它。这本身并不是一个真正的问题,更重要的是您需要客户端计算机上的管理员权限才能执行使用 CasPol 工具所做的事情,而我们客户环境中的大多数客户端都没有这些权限。

同一博客上还发表了一篇文章,似乎暗示随着 .NET 3.5 SP1 的发布,运行 CasPol 修复程序的需求已经得到缓解:http: //blogs.msdn.com/shawnfa/archive/2008/ 05/12/fulltrust-on-the-localintranet.aspx

但是,我修改了我们的应用程序以专门针对框架的 SP1 版本,如本文所述:http: //msdn.microsoft.com/en-us/library/bb398202.aspx#

这样做之后,我们仍然遇到了同样的 SecurityException。所以我随后应用了文章中详述的一些特定的 SP1 ClickOnce 设置,但仍然没有乐趣。如果我直接从发布网络共享启动应用程序,我被授予权限,似乎只有在 ClickOnce 的上下文中我们才被拒绝。

有没有其他人遇到过类似的问题?我会认为如果框架的 SP1 版本中存在与这些权限相关的问题,其他人会在我们之前注意到它,因为我们甚至还没有发布 ClickOnce 解决方案。

4

1 回答 1

3

我想我在 .NET 4.0 上遇到过类似的问题,午餐时出现安全异常。我找到的解决方案是使用经过批准的证书(不是 Visual Studio 为您的项目生成的默认证书)对清单进行数字签名。

这是 ClickOnce 部署清单上的一个已知“错误”(或设计使然)。

你的项目签了吗?

于 2011-07-17T11:13:29.157 回答