我不难将代码保存到临时文件夹,使用csc.exe编译它并动态加载程序集,但如何以有限的权限执行代码呢?
例如,如何禁止代码......
欢迎任何信息(博客/文章/论文/手册......)。
答案 0 :(得分:3)
您可能需要在不同的AppDomain中加载程序集,您创建的AppDomain会为其提供您希望拥有的权限。通常,加载到默认AppDomain的程序集将具有委派给该AppDomain的权限。通过创建另一个AppDomain,您可以完全控制AppDomain的权限,该权限将传播到加载到其中的程序集。
然而,有一点需要注意的是,对加载到另一个AppDomain中的代码的调用需要进行封送处理,这会对性能产生一些影响。以下文章可以帮助您入门:
http://blogs.msdn.com/shawnfa/archive/2004/10/25/247379.aspx
http://blogs.msdn.com/shawnfa/archive/2004/10/22/246549.aspx
答案 1 :(得分:0)
有两种看待这个的方法;第一个是通过一个AppDomain
和一个单独的信任,jrista给出了一个很好的答案。第二个是:不编译任意/用户代码;-p根据场景,您可以构建一个只能访问您乐意展示的功能的DSL,并编译 。我成功地使用过这种方法很多次了。这创建了一个非常受控制的沙箱 - 唯一要注意的是无限循环之类的东西,但如果真的需要,那么即使这样也是可以修复的。
所以我猜真正的问题是:输入是C#吗?或者这只是一个方便吗?
答案 2 :(得分:0)
IMO,开始是创建一个访客用户帐户来运行该流程。然后按照其他步骤操作。