ClickOnce и Безопасность - PullRequest
       344

ClickOnce и Безопасность

4 голосов
/ 04 марта 2009

Я работаю в компании, которая производит коммерческий продукт, и в настоящее время мы пытаемся предоставить решение, которое позволит некоторым из наших крупных клиентов распространять клиентскую часть нашего приложения через ClickOnce.

Предполагается, что наши клиенты развернут установку ClickOnce на общем сетевом ресурсе, а затем отправят ссылку на манифест приложения клиентам по электронной почте или другим способом.

Мы смогли успешно интегрировать производство установки ClickOnce в нашу автоматизированную сборку (с использованием инструментов командной строки Mage), и затем мы можем успешно запустить фактическую установку на клиентском компьютере. Однако после установки и запуска наше приложение выдает исключение SecurityException во время выполнения, поскольку ему отказано в доступе к FileIOPermission. Наше приложение требует разрешения FullTrust, но, похоже, если расположение CodeBase исполняемой сборки является сетевым ресурсом, вам предоставляются только разрешения LocalIntranet (не включая FileIOPermission).

Здесь есть статья, которая, похоже, указывает на то, что это довольно распространенная проблема: http://blogs.msdn.com/shawnfa/archive/2004/12/30/344554.aspx

В этой статье предлагается обходной путь с использованием инструмента CasPol, но нам придется запускать его на каждом клиентском компьютере в среде развертывания. Само по себе это не проблема, это скорее тот факт, что вам требуются права администратора на клиентском компьютере для выполнения того, что делается с помощью инструмента CasPol, и большинство клиентов в среде наших клиентов не будут иметь этих привилегий.

В том же блоге также была опубликована статья, в которой, по-видимому, подразумевается, что необходимость запуска исправления CasPol была устранена с выпуском .NET 3.5 SP1: http://blogs.msdn.com/shawnfa/archive/2008/05/12/fulltrust-on-the-localintranet.aspx

Тем не менее, я изменил наше приложение, чтобы специально предназначаться для выпуска SP1 фреймворка, как подробно описано в этой статье: http://msdn.microsoft.com/en-us/library/bb398202.aspx#

После этого мы все еще сталкивались с тем же SecurityException. Поэтому я применил некоторые специфические настройки ClickOnce SP1, как подробно описано в статье, но все равно не радуюсь. Если я запускаю приложение непосредственно из общего ресурса публикации, мне предоставляются разрешения, и, похоже, только в контексте ClickOnce нам отказывают в них.

Кто-нибудь еще сталкивался с проблемами, подобными этим? Я бы подумал, что если бы в выпуске SP1 фреймворка была проблема с этими разрешениями, кто-нибудь другой бы заметил это до нас, поскольку мы еще даже не поставили решение ClickOnce.

1 Ответ

3 голосов
/ 17 июля 2011

Я думаю, что я столкнулся с подобной проблемой в .NET 4.0 с исключением безопасности во время обеда. Решение, которое я нашел, состояло в том, чтобы подписать манифест цифровой подписью с утвержденным сертификатом (не по умолчанию, который Visual Studio генерирует для вашего проекта).

Это известная «ошибка» (или дизайн) в развернутых манифестах ClickOnce.

Ваш проект подписан?

...