Портирование изолированной программной среды безопасности с .NET 2.0 на .NET 4.0 - PullRequest
2 голосов
/ 20 октября 2010

У меня есть работающий плагин .NET 2.0, который принимает домен AppDomain, созданный внешним приложением, и применяет пользовательскую политику безопасности (PolicyLevel) с помощью метода AppDomain.SetAppDomainPolicy (). Однако этот метод устарел в .NET 4.0 и не работает во время выполнения. Вот пример кода:

AppDomain domain = ExternalApplication.GetAppDomain(); //This call is from external program which I can’t change.

PolicyLevel pl = GetUserDefinedPolicyLevel()

домен. SetAppDomainPolicy (пл); // Сбой в .NET 4.0

Я видел пример 4.0 настройки безопасности AppDomain с помощью следующего вызова:

AppDomain.CreateDomain (строка friendlyName, Evidence securityInfo, информация AppDomainSetup, PermissionSet grantSet, параметры StrongName [] fullTrustAssemblies);

Однако этот API используется, когда AppDomain уже создан. В моей ситуации надстройка должна использовать существующие домены приложений.

Другое решение, которое я нашел, состояло в том, чтобы использовать файлы .config и добавить элемент <NetFx40_LegacySecurityPolicy enabled="true" /> для обеспечения безопасности прежнего AppDomain. В моем случае это также не вариант, так как у меня есть надстройка для приложений, и я не могу добавить файлы .config.

Есть ли способ изменить безопасность AppDomain во время выполнения после его создания в .NET 4.0?

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

Спасибо

1 Ответ

0 голосов
/ 22 ноября 2011

Нет, вы не можете изменить PermissionSet домена приложения после того, как он был создан. Хотя есть альтернатива. См принятый ответ для этого сообщения .

...