2010-10-20 108 views
2

我已經在使用.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會消除在運行時收緊安全性的能力。

感謝

回答

0

不,你不能把它創建後更改一個AppDomain的PermissionSet中。但有一個選擇。看到這個post接受的答案。