Отладка TrustNotGrantedException в надстройке VSTO word

Я получаю исключение TrustNotGrantedException для некоторых конкретных пользователей нашей надстройки слова VSTO.

У этих пользователей сертификат установлен правильно.

Исключение возникает, когда приложение проверяет наличие обновлений:

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

Изменить2:

Использование caspol.exe помогло! Кто-нибудь знает способ предотвратить это в коде? Или кто-нибудь может объяснить, почему это может происходить только с избранными пользователями?

Изменить3:

я попробую добавить

<system.web>
  <!-- level="[Full|High|Medium|Low|Minimal]" -->
  <trust level="Full" originUrl=""/>
</system.web>

в app.config

Изменить4:

Добавление полного доверия CAS к app.config не помогло. Может ли кто-нибудь показать мне, возможно ли добиться того, что CASPOL делает в коде?

Изменить5:

Если это невозможно сделать в коде, есть ли простой способ запустить команду CASPOL как часть установки clickonce?


person woggles    schedule 26.08.2011    source источник
comment
это зависит от среды... какие разрешения есть у пользователя, запускающего приложение (администратор/неадминистратор/с ограничениями)... любые специальные настройки в среде домена/AD, возможно, какая-то групповая политика и т. д.   -  person Yahia    schedule 27.08.2011
comment
@Yahia, к сожалению, будет сложно сузить это число - я знаю, что все пользователи, сталкивающиеся с проблемами, были администраторами на своих локальных машинах. Спасибо за комментарий:)   -  person woggles    schedule 27.08.2011
comment
Вы уверены, что правильный тег — system.web? Я думаю, что это может быть что-то еще для надстроек Word, потому что это не веб.   -  person Ramon Snir    schedule 06.09.2011
comment
Я не уверена! Это было частью автозаполнения в app.config.   -  person woggles    schedule 06.09.2011
comment
Посмотрите документацию (может в MSDN?). Если я правильно помню из Office 2003, вам действительно нужно добавить какой-то тэг доверия, но я сомневаюсь, что он есть в system.web.   -  person Ramon Snir    schedule 06.09.2011


Ответы (1)


В последних версиях Windows загруженные файлы помечаются как заблокированные, и на них накладываются ограничения безопасности, которые могут привести к поломке при использовании другими приложениями из-за песочницы.

Реализация использует NTFS alternate streams. Если файл заблокирован, вы можете узнать, щелкнув файл правой кнопкой мыши, просмотрев свойства и увидев кнопку unblock. Щелчок по разблокировке удаляет stream и снимает дополнительные ограничения безопасности.

Его также можно удалить с помощью sysinternals streams.exe. Проверьте, является ли это вашей проблемой, загрузив подключаемый модуль на компьютер с Windows 7, а затем установите его без разблокировки, чтобы увидеть, воспроизводит ли он проблему.

person TheCodeKing    schedule 07.09.2011