2011-08-26 104 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計算機上下載插件來測試這是否是您的問題,然後在不解除封鎖的情況下進行安裝,以查看它是否會再現問題。