Запуск “частично доверенных” сборок .NET из общего сетевого ресурса

StackOverflow https://stackoverflow.com/questions/24468

  •  09-06-2019
  •  | 
  •  

Вопрос

Когда я пытаюсь запустить сборку .NET (boo.exe) из общего сетевого ресурса (подключенного к диску), он терпит неудачу, поскольку ему доверяют только частично:

Unhandled Exception: System.Security.SecurityException: That assembly does not allow partially trusted callers.
   at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
   at BooCommandLine..ctor()
   at Program..ctor()
   at ProgramModule.Main(String[] argv)
The action that failed was:
LinkDemand
The assembly or AppDomain that failed was:
boo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67
The Zone of the assembly that failed was:
Intranet
The Url of the assembly that failed was:
file:///H:/boo-svn/bin/boo.exe

С инструкциями от запись в блоге, я добавил политику в конфигурацию .NET , полностью доверяющую всем сборкам с file:///H:/* как их URL-адрес.Я подтвердил это, введя URL-адрес file:///H:/boo-svn/bin/boo.exe в Оценить Сборку инструмент в конфигурации .NET и отметив, что boo.exe имел Неограниченный разрешение (которого у него не было до появления политики).

Даже с разрешения, boo.exe не запускается.Я по-прежнему получаю то же сообщение об ошибке.

Что я могу сделать для устранения этой проблемы?Есть ли другой способ запускать "частично доверенные" сборки из общих сетевых ресурсов без необходимости что-либо менять для каждой сборки, которую я хочу запустить?

Это было полезно?

Решение

С .NET 3.5 SP1 сборки .NET, запускаемые из общих ресурсов UNC, имеют полные разрешения.

Посмотрите фильм Брэда Абрамса Разрешить запуск .exes из общего сетевого ресурса для обходных путей и обсуждений, и, наконец, для последующих действий .NET 3.5 с пакетом обновления 1 позволяет запускать управляемый код из общего сетевого ресурса.

Другие советы

Я решил проблему, используя caspol как указано в сообщении в блоге Джонни Хьюза Запуск .Сетевое приложение из общего сетевого ресурса:

caspol -addgroup 1.2 -url file:///H:/* FullTrust

Похоже, что графический интерфейс .NET Configuration GUI для управления политиками просто не работает.

Взгляните на программу caspol.exe '(предоставляется .Объем выполнения).Вам нужно будет сделать это на компьютере, с которого вы пытаетесь запустить приложение.Я не смог "пометить" и собрать (вероятно, только я).Однако использование caspol и настройка надлежащего разрешения для моего приложения LocalIntranet_Zone устраняют мою аналогичную проблему.

Я слышал (но еще не пробовал), что .NET 3.5 с пакетом обновления 1 удалил это ужесточающее требование безопасности (не позволяя .СЕТЕВЫЕ сборки по умолчанию размещаться в общем ресурсе).

Я думаю, вы хотите добавить Разрешить частично доверенные вызовы атрибут для вашей сборки.Сообщение об ошибке подразумевает, что что-то, вызывающее вашу boo.exe сборку, не является полностью доверенным и boo.exe не имеет этого атрибута, разрешающего это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top