调试VSTO word插件中的TrustNotGrantedException异常
本文关键字:TrustNotGrantedException 异常 插件 VSTO word 调试 | 更新日期: 2023-09-27 18:06:47
我得到TrustNotGrantedException抛出我们的VSTO word插件的一些特定用户。
这些用户已正确安装证书。
当应用程序检查更新时抛出异常:
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的权限,并稍后跟进,尽管我更希望能够在代码中防止这种情况,而不是修复单个客户端机器。比如:
caspol -m -ag 1 -url "http://machinename/application/*" FullTrust -exclusive on
Edit2:
使用caspol.exe工作!有人知道在代码中防止这种情况发生的方法吗?或者有人能解释一下为什么这种情况只会发生在特定的用户身上吗?
Edit3:
我将尝试添加
<system.web>
<!-- level="[Full|High|Medium|Low|Minimal]" -->
<trust level="Full" originUrl=""/>
</system.web>
到app.config
标:
在app.config中添加完整的CAS信任没有帮助。谁能告诉我是否有可能实现CASPOL在代码中所做的事情?
Edit5:
如果在代码中不可能做到这一点,是否有一种简单的方法来运行CASPOL命令作为clickonce安装的一部分?
在最近的Windows版本中,下载的文件被标记为阻止并有安全限制,当被其他应用程序使用时,由于沙箱可能会导致损坏。
实现使用NTFS alternate streams
。如果文件被阻止,您可以通过右键单击文件,查看属性并看到unblock
按钮来判断。单击unblock将移除stream
并释放额外的安全限制。
也可以用sysinternals
streams.exe
去除。通过在Windows 7机器上下载插件来测试这是否是你的问题,然后在不解锁的情况下安装,看看是否再次出现这个问题。