【问题标题】:How to give process specific privileges in windows如何在 Windows 中赋予进程特定权限
【发布时间】:2011-03-02 15:09:42
【问题描述】:

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

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

请原谅我的英语。

提前谢谢你。

【问题讨论】:

    标签: windows process privileges execution rights


    【解决方案1】:

    可能工作对象可以帮助您(请参阅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 如何创建低完整性进程。

    【讨论】:

    • 谢谢,这真的很有帮助。我项目的最大部分是用 java 编写的,所以我会尝试为 Job Objects 找到一些好的 API,或者我会使用 JNI,或者尝试 UIPI。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2021-12-21
    • 1970-01-01
    相关资源
    最近更新 更多