Могу ли я программно проверить полное доверие до запуска XBAP? - PullRequest
1 голос
/ 10 февраля 2011

Я создал приложение XBAP с полным доверием, которое существует в скрытом фрейме, когда страница загружается с использованием .NET 4.0 и BrowserInteropHelper, который обеспечивает связь между веб-страницей хоста и доступом к файловой системе клиента. Все это работает отлично.

Я обнаружил следующий процесс установки, в котором указан URL-адрес службы поддержки @ Страница свойств проекта> Публикация> Параметры под описанием. Затем ссылка поддержки, которую пользователь получает, когда получает ошибку «Доверие не предоставлено», может предоставить ряд шагов, проходящих конечного пользователя через процесс установки, в конечном итоге заставляющих пользователя предоставить полное доверие XBAP.

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b6f33aa4-4399-430f-ba0f-81fa8ff6efec/

Это бы хорошо работало для меня, но контроль, который я хочу предоставить конечному пользователю, не требует пользовательского интерфейса при загрузке страницы. Таким образом, упомянутая выше модель не работает, потому что пользователь не видит ошибку «Доверие не предоставлено» и щелкает ссылку на элементе управления, чтобы пройти процесс предоставления доверия.

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

Затем я наткнулся на статью о том, как XBAP с полным доверием, выполняемые в доверенной зоне, проходят однократный процесс проверки одним щелчком мыши до запуска, где пользователь может предоставить разрешение на просмотр издателю программного обеспечения и предоставить полное доверие XBAP. Я подумал, что это может быть альтернативой, поэтому я провел дальнейшее исследование, но обнаружил, что программная проверка на наличие доверенного сайта выглядит несколько глупо, поскольку единственное решение, которое я действительно нашел, - это создание объекта activex, для которого в противном случае у сайта не было бы разрешения создавать его. не был доверенным сайтом.

Что мне действительно нужно, так это какая-то надежная модель, которая может быть на 90% решением для определения того, было ли XBAP уже предоставлено полное доверие или текущий домен помечен как доверенный сайт, поэтому конец пользователь может пройти процесс clickonce.

Заранее спасибо за помощь!

EDIT: Поэтому я подумал о решении как о части написания своего вопроса и еще не попробовал его, но думаю, что этого будет достаточно, если у кого-то из вас не будет лучшего предложения.

  1. Перед запуском страницы требуется, чтобы элемент управления без пользовательского интерфейса направлял пользователя на страницу предварительных требований, на которой загружается FullTrust XBAP, подписанный тем же сертификатом, что и мой элемент управления без пользовательского интерфейса.

  2. Перенаправление на страницу предварительных требований с полным доверием XBAP с пользовательским интерфейсом, подписанным с тем же сертификатом, что и элемент управления без пользовательского интерфейса.

  3. Если пользователь видит ошибку «Доверие не предоставлено», он может использовать URL-адрес поддержки, предоставленный как часть ошибки, для прохождения процесса установки.

  4. После того, как пользователь завершит шаги, необходимые для установки, предоставьте пользователю ссылку, которая отправит его обратно на страницу предварительных требований.

  5. Всякий раз, когда элемент управления загружается на странице предварительных требований, после того, как пользователь предположительно предоставил код выполнения полного доверия XBAP через взаимодействие JavaScript, поддерживаемое в .NET 4.0, которое перенаправляет пользователя на страницу с элементом управления без пользовательского интерфейса ,

...