加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 限制动态加载程序集的执行

发布时间:2020-12-15 22:05:50 所属栏目:百科 来源:网络整理
导读:参见英文答案 Restrict plugin access to file system and network via appdomain????????????????????????????????????3个 我正在构建一个可以添加自定义用户bot的棋盘游戏. 根据界面定义机器人行为和决策: public interface IBotPlayer { ..... void Init
参见英文答案 > Restrict plugin access to file system and network via appdomain????????????????????????????????????3个
我正在构建一个可以添加自定义用户bot的棋盘游戏.
根据界面定义机器人行为和决策:

public interface IBotPlayer 
{
    .....

    void Init(); 

    PlayResult Play(TableState tableState) ; 

    ..... 
}

其他用户可以在我在主应用程序中动态加载的外部程序集中实现该接口.

Assembly assembly = Assembly.LoadFile("externalLib.dll");

foreach (var botPlayerType in assembly.GetTypes().Where(t => t.IsClass && t.IsAssignableFrom(typeof(IBotPlayer)))
{
    ..........

    // Execution on a new thread th
    // Now I wanna run it in some kind of sandbox with very limited right,no disk access,no network,...

     IBotPlayer botPlayer = Activator.CreateInstance<IBotPlayer>(botPlayerType); 
     botPlayer.Init() ;     

     ........
}

>好像IBotPlayer实现应该只是算法,是否可以仅使用集合来限制执行线程? **如果是的话怎么样?

解决方法

这个答案正是你所需要的! https://stackoverflow.com/a/5621587/2687006

我自己玩代码并且可以说,上面答案中棘手的部分是从受限制的appdomain执行沙箱.然后,Sandboxer使用不受信任的代码加载dll并执行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读