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

Когда я пытаюсь запустить сборку .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в инструмент Evaluate Assembly в конфигурации .NET и отметив, что boo.exe имеет неограниченное разрешение (которого у него не было до политики).

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

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

23.08.2008 18:33:55
4 ОТВЕТА
РЕШЕНИЕ

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

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

5
23.08.2008 18:42:49
Интересно. Возможно, закрытые исполняемые файлы Windows 7 запускаются через сетевые ресурсы, управляемые или собственные.
Judah Gabriel Himango 22.12.2010 06:28:41

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

0
23.08.2008 18:45:22

Взгляните на программу «caspol.exe» (поставляется с .NET runtime). Вам придется сделать это на компьютере, с которого вы пытаетесь запустить приложение. Я не смог «пометить» и собрать (наверное, только я). Тем не менее, используя caspol и настройку правильного разрешения для моего приложения LocalIntranet_Zone, исправьте мою похожую проблему.

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

2
23.08.2008 18:50:09

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

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

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

3
25.08.2008 16:48:07