我使用的是.NET 2.0插件,它接受外部应用程序创建的AppDomain,并使用AppDomain.SetAppDomainPolicy()方法应用用户定义的安全策略(PolicyLevel)。但是,此方法在.NET 4.0中已过时,并且在运行时失败。这是一个示例代码:
AppDomain domain = ExternalApplication.GetAppDomain(); //This call is from external program which I can’t change.
PolicyLevel pl = GetUserDefinedPolicyLevel()
域。 SetAppDomainPolicy(PL); //这在.NET 4.0中失败
我通过使用以下调用看到4.0示例设置AppDomain安全性:
AppDomain.CreateDomain(string friendlyName,Evidence securityInfo,AppDomainSetup info,PermissionSet grantSet,params StrongName [] fullTrustAssemblies);
但是,在已创建AppDomain时使用此API。在我的情况下,插件必须使用现有的AppDomains。
我发现的另一个解决方案是使用.config文件并添加<NetFx40_LegacySecurityPolicy enabled="true" />
元素来强制执行旧版AppDomain安全性。在我的情况下,这也不是一个选项,因为我有一个应用程序的插件,我不能添加.config文件。
在.NET 4.0中创建AppDomain安全性后,有没有办法在运行时更改它?
我希望这应该是可能的,否则看起来4.0会删除在运行时加强安全性的能力。
由于