2011-08-26 98 views
3

我收到了针对我们的VSTO单词插件的某些特定用户引发的TrustNotGrantedException异常。在VSTO单词插件中调试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() 

有没有人经历过这种或知道如何防止这种情况的代码或任何解决方法?

编辑:

我曾经使用过此blog post的问题阅读,它似乎是它可以与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

Edit4:

添加全CAS信任的应用程序.config没有帮助。任何人都可以告诉我它是否有可能实现CASPOL在代码中所做的事情?

Edit5:

如果这是不可能做到这一点的代码,有没有简单的方法来为安装的ClickOnce的一部分运行CASPOL命令?

+0

取决于环境......运行应用程序的用户拥有的权限(admin/non-admin/restricted)...域/ AD环境中的任何特殊设置,可能是某些组策略等。 – Yahia

+0

@Yahia不幸的是,我们很难将其缩小 - 我知道遇到问题的用户都是本地计算机上的所有管理员。感谢评论:) – woggles

+0

你确定正确的标签是system.web吗?我认为这可能是Word加载项的其他内容,因为它不是网页。 –

回答

0

在最新版本的Windows中,下载的文件被标记为被阻止,并且对它们施加了安全限制,这些限制可能会导致由于沙盒而被其他应用程序占用时破坏。

执行使用NTFS alternate streams。如果文件被阻止,您可以通过右键单击文件,查看属性并查看unblock按钮来判断。点击取消阻止会删除stream并释放额外的安全限制。

它也可以使用sysinternalsstreams.exe删除。通过在Windows 7计算机上下载插件来测试这是否是您的问题,然后在不解除封锁的情况下进行安装,以查看它是否会再现问题。