Security 限制codedom编译程序集

Security 限制codedom编译程序集,security,codedom,Security,Codedom,我已经为我的应用程序编写了一个插件管理器,它利用codedom将c#代码编译成类库并实例化其类型。 它工作得很好,现在我想限制已编译程序集的权限。不幸的是,我不知道怎么做。 据我所知,我应该以某种方式使用编译器参数。证据,但我不清楚如何使用。 为了清楚起见,我不想简单地将assmbly分类为某个区域,我想将其限制为一个权限集,该权限集作为参数在pluginmanagers构造函数中传递。我还想指出,我没有将程序集加载到新的appdomin中,它与应用程序的其余部分在同一个域上执行 谢谢。处理安全

我已经为我的应用程序编写了一个插件管理器,它利用codedom将c#代码编译成类库并实例化其类型。 它工作得很好,现在我想限制已编译程序集的权限。不幸的是,我不知道怎么做。 据我所知,我应该以某种方式使用编译器参数。证据,但我不清楚如何使用。 为了清楚起见,我不想简单地将assmbly分类为某个区域,我想将其限制为一个权限集,该权限集作为参数在pluginmanagers构造函数中传递。我还想指出,我没有将程序集加载到新的appdomin中,它与应用程序的其余部分在同一个域上执行


谢谢。

处理安全性的CodeDOM示例对google来说很棘手。经过几个小时的阅读,我发现了两种方法

最好的似乎是托管插件框架,因为它正是为您的用例senario设计的。

CAS(代码访问安全性)也是一种选择,但它似乎不太受欢迎,即将退出市场。下面是一个从[SO post][3]中摘取的例子

var myEvidence = new Evidence(new object[] {SecurityZone.Internet});
var newDomain = AppDomain.CreateDomain("InternetDomain");
myDomain.Load("MyUntrustedAssembly.dll", myEvidence);
myDomain.CreateInstanceAndUnwrap("MyUntrustedAssembly","MyUntrustedObjectType");
CAS参考文献

整整一年后,我有了同样的问题。您找到答案了吗?如何使用.NET Framework 4.0实现这一点?编译器参数。现在不推荐使用证据。。有什么想法吗?