背景: winform,通过Process.start()启动一个外部exe,通过重定向输入输出来进行一些项目相关操作.但是有一个问题,我调用的外部exe是未知的.有可能外部exe具有破坏性,比如:扫描删除文件,大量申请内存等等操作.如何限制这个exe的行为,比如:限制IO操作,限制只能申请指定大小内的内存.我现在没有什么思路,希望高手能给指点一下,或者给几行demo代码.在此先行谢谢了!!

解决方案 »

  1.   

    主要要做一个类似ACM在线评判的工具,所以需要驱动第三方exe并重定向输入输出流进行数据的控制和捕获.但是第三方exe有危险性,所以需要进行一些限制
      

  2.   

    也是新手哈,C#里面有一个可以调用外部程序的类叫System.Diagnostics.Process,使用System.Diagnostics.ProcessStartInfo类设置外部程序的相关参数。
    如 System.Diagnostics.Process process = new System.Diagnostics.Process();
    process.Start(new System.Diagnostics.ProcessStartInfo());
    大概可以调用外部程序,然后貌似可以通过设置ProcessStartInfo中的某些属性或者是监视Process运行时占用的内存等等来控制外部程序的运行吧。
    原来接触过一下,记不清了。大概就是这个。其他的方法不知道
      

  3.   

    是用Process.Start调用的,有属性能监视时间和内存,但那个属于发生以后在检测的范畴,可能没运行到检测系统已经崩了,不是预防,不是权限层面的.而且也没法限制IO
      

  4.   

    这个不是C#的专长,你真想做的话,其马得用c/C++
    你上面那位仁兄说的一样,这不是一个层面的。
      

  5.   

    恩,C#做这个确实乏力,我毕设做的也是这个,至少我没有找到合适的方法。虽说不能相信任何用户的操作,但是也只能期待没有恶意的少年传来变态的程序了。内存好像是可以设置的,IO操作什么的就不清楚了。绑定,学习
      

  6.   


    但是现在做的一个系统是全部基于.Net平台的项目,使用C#(或者说是.net吧)写的一些核心算法,封装成DLL,可以被前台ASP引用进行前后台统一,而且将来使用分布式等部署也需要使用.Net平台的框架.所以换语言不是解决问题的办法,而是把问题绕开了.
      

  7.   


    你的毕业论文设计可否是JudgeOnline或者类似的功能模块?
      

  8.   

    就是上传源码,服务器测评,服务器编译并返回结果的一个项目,B/S架构的,不过后台使用C#实现过,大致是这样