如何限制流程以创建新流程?
答案 0 :(得分:2)
在Windows上,没有办法阻止处理产生其他进程。在我所知道的任何操作系统上也没有。
CreateProcess()
系统调用可用于所有进程,因此任何进程都可以创建子进程。
您可以在沙盒中运行该进程,该进程限制了进程创建,但是这可能比您想要的更多。
我可以问为什么你想做这样的事吗?
答案 1 :(得分:2)
您可以将流程分配给作业对象。使用带有JOB_OBJECT_LIMIT_ACTIVE_PROCESS标志的SetInformationJobObject将该作业对象中的进程数限制为一。不要设置JOB_OBJECT_LIMIT_BREAKAWAY_OK(这将允许进程创建不属于作业对象的进程)。
进程可以仍然可以解决这个问题,例如通过任务调度程序或WMI启动新进程。如果您正在尝试创建一个沙箱来运行您真正不信任的代码,这将是不够的。如果你有一个你信任的程序,但只是想对它的作用设置一些限制,这应该是足够的。
稍微不同的是,这相当于锁定你的车。有人可以闯入(或者说,在这种情况下),但至少他们必须做的不仅仅是不受阻碍地走路。
答案 2 :(得分:1)
JOBOBJECT_BASIC_LIMIT_INFORMATION
可以限制活动进程的数量,或使用JOBOBJECT_ASSOCIATE_COMPLETION_PORT
并终止新进程(如果您只需要杀死所有新进程的子集)