我正在为我们的VSTO word加载项的一些特定用户提供TrustNotGrantedException。
这些用户正确安装了证书。
当应用程序检查更新时,会引发异常:
try
{
ApplicationDeployment.CurrentDeployment.CheckForUpdate()
}
catch(TrustNotGrantedException ex)
{
Log(ex);
}堆栈跟踪记录如下:
User has refused to grant required permissions to the application.
at System.Deployment.Application.ApplicationTrust.RequestTrust(SubscriptionState subState, Boolean isShellVisible, Boolean isUpdate, ActivationContext actCtx, TrustManagerContext tmc) at System.Deployment.Application.DeploymentManager.DetermineTrustCore(Boolean blocking, TrustParams tp) at System.Deployment.Application.DeploymentManager.DetermineTrust(TrustParams trustParams) at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate(Boolean persistUpdateCheckResult) at System.Deployment.Application.ApplicationDeployment.CheckForUpdate() at iReport.iReportAddIn.CheckForUpdates()是否有人经历过这种情况,或知道如何在代码中或使用任何解决办法来防止这种情况?
编辑:
我已经阅读过关于这些问题的这个博客帖子,看起来这可能是问题用户的CAS权限问题。
我将尝试让用户使用这个更新URL访问有问题的URL,并在稍后进行跟踪,尽管我更希望能够在代码中防止这种情况,而不是修复单个客户端机器。类似于:
caspol -m -ag 1 -url "http://machinename/application/*" FullTrust -exclusive onEdit2:
使用caspol.exe有效!有谁知道如何在代码中防止这种情况发生吗?或者有人能解释为什么只发生在选择用户的情况下?
Edit3:
我要试着添加
<system.web>
<!-- level="[Full|High|Medium|Low|Minimal]" -->
<trust level="Full" originUrl=""/>
</system.web>到app.config
Edit4:
向app.config添加完全的CAS信任没有帮助。有人能告诉我是否有可能实现CASPOL在代码中所做的事情吗?
Edit5:
如果无法在代码中这样做,是否有一种简单的方法可以将CASPOL命令作为clickonce安装的一部分运行?
发布于 2011-09-07 12:29:36
在最新版本的Windows中,下载的文件被标记为阻止文件,并对它们施加了安全限制,当其他应用程序由于沙箱而使用时,这些文件会导致损坏。
实现使用NTFS alternate streams。如果该文件被阻塞,您可以通过右键单击该文件、查看属性和查看unblock按钮来判断。单击unblock将删除stream并释放额外的安全限制。
还可以使用sysinternals streams.exe删除它。通过在Windows 7计算机上下载插件来测试这是否是您的问题,然后在安装时不加阻塞地查看它是否会重现问题。
https://stackoverflow.com/questions/7202083
复制相似问题