0

我正在编写一些测试软件,它接收一些源代码,在服务器上编译它,执行它,从数据库转发输入,捕获输出并将其与数据库中的一个进行比较,看看它是否正确。问题是源代码可以是任何东西(它是用 c/c++ 编写并用 Visual Studio cl 编译的),所以我需要以某种方式防止恶意用户。如果这些进程运行时间超过一段时间,或者使用的内存超出允许范围,我会自动终止这些进程。

问题是,我是否只能允许这些进程仅从标准输入/输出流写入和读取,并拒绝 Windows 上的任何其他访问权限。

请原谅我的英语。

先感谢您。

4

1 回答 1

1

可能Job Objects可以帮助您(请参阅http://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx)。这个非常强大的功能并不为人所知。

处理工作非常容易。您可以创建一个作业CreateJobObject并设置许多不同的限制,例如时间、内存和一些限制。然后您可以创建一个带有挂起标志的进程,将进程分配给作业并恢复该进程。然后,您在创建的进程和进程可以创建的所有子进程树下获得完全控制权。作业功能自 Windows 2000 起存在。

另一种现代方式是用户界面特权隔离 (UIPI)(参见http://msdn.microsoft.com/en-us/library/bb625963.aspx)或 Vista 引入的低完整性进程的使用方式。请参阅http://msdn.microsoft.com/en-us/library/Bb250462#dse_stlip如何创建具有低完整性的进程。

于 2010-06-11T12:53:22.103 回答