我已經在使用.NET 2.0插件,它接受由外部應用程序創建的AppDomain並使用AppDomain.SetAppDomainPolicy()方法應用用戶定義的安全策略(PolicyLevel)。但是,此方法在.NET 4.0中已過時,並在運行時失敗。以下是示例代碼: 將安全沙箱從.NET 2.0移植到.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(字符串的friendlyName,證據securityInfo,AppDomainSetup信息,PermissionSet中grantSet,則params強名稱[] fullTrustAssemblies );
但是,當已經創建AppDomain時使用此API。在我的情況下,插件必須使用現有的AppDomain。
我發現的另一個解決方案是使用.config文件並添加<NetFx40_LegacySecurityPolicy enabled="true" />
元素來強制傳統的AppDomain安全。這對我來說也不是一個選項,因爲我有一個應用程序插件,我不能添加.config文件。
在.NET 4.0中創建它之後,有沒有辦法在運行時更改AppDomain的安全性?
我希望這應該是可能的,因爲否則它看起來像4.0會消除在運行時收緊安全性的能力。
感謝