У меня есть работающий плагин .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 лишило возможности усиливать безопасность во время выполнения.
Спасибо