微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

参见英文答案 > 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实现应该只是算法,是否可以仅使用集合来限制执行线程? **如果是的话怎么样?

@R_502_5620@

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐