簡體   English   中英

在VSTO word addin中調試TrustNotGrantedException

[英]Debugging TrustNotGrantedException in VSTO word addin

我正在為我們的VSTO word addin的某些特定用戶拋出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並稍后跟進,但我更願意在代碼中防止這種情況而不是修復單個客戶端計算機。 就像是:

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信任添加到app.config沒有幫助。 任何人都可以告訴我是否有可能實現CASPOL在代碼中所做的事情?

Edit5:

如果在代碼中無法執行此操作,是否有一種簡單的方法可以在Clickonce安裝中運行CASPOL命令?

在最新版本的Windows中,下載的文件被標記為已阻止,並且對它們施加了安全限制,這些限制可能會因沙盒而被其他應用程序占用時導致破壞。

該實現使用NTFS alternate streams 如果文件被阻止,您可以通過右鍵單擊文件,查看屬性並查看unblock按鈕來判斷。 單擊取消阻止將刪除該stream並釋放額外的安全限制。

它也可以使用sysinternals streams.exe刪除。 通過在Windows 7計算機上下載插件來測試這是否是您的問題,然后在不解除阻止的情況下進行安裝以查看它是否重現了該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM