最大CreateProcessWithLogonW和NetUserAdd

时间:2009-05-04 16:25:08

标签: c windows winapi

我写了一个小函数,它将加载一个多个实例 使用CreateProcessWithLogonW

执行

伪代码:

for ( i=0;i<100;i++)
 {
 sprintf(user,"user%i",i);
 sprintf(pass,"pass%i",i);
 if(NetUserGetInfo(user,pass)==NOT_FOUND) { NetUserAdd(user,pass); }
 aaProcessCreateWithLogin("prog.exe",user,pass);
 }

它工作正常,但它限制为32个实例 - 其他实例失败 -

可以启动的用户数量是否有限制 过程同时进行?

由于

1 个答案:

答案 0 :(得分:1)

来自documentation for CreateProcessWithLogonW

  

数量有限   可以创建的子进程   此功能并同时运行。   例如,在Windows XP上,此限制   是MAXIMUM_WAIT_OBJECTS*4。在Windows上   2000年,这个限制是   MAXIMUM_WAIT_OBJECTS。但是,你可以   无法创造这么多   系统范围配额导致的流程   限制。

我在Windows XP上测试过MAXIMUM_WAIT_OBJECTS它是64,所以也许你正在达到'系统级配额限制'。

This post建议使用LogonUserCreateProcessAsUser的组合来避免达到这些限制。