Максимум CreateProcessWithLogonW и NetUserAdd - PullRequest
1 голос
/ 04 мая 2009

Я написал небольшую функцию, которая будет загружать несколько экземпляров исполняемый с использованием 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 случаев - сбой дополнительных экземпляров -

Есть ли ограничение на количество пользователей, которые могут запускать процессы одновременно?

Спасибо

Ash

1 Ответ

1 голос
/ 20 мая 2009

Из документации для CreateProcessWithLogonW :

Существует ограничение на количество дочерние процессы, которые могут быть созданы эта функция и запускается одновременно. Например, в Windows XP это ограничение это MAXIMUM_WAIT_OBJECTS*4. На винде 2000, этот предел MAXIMUM_WAIT_OBJECTS. Тем не менее, вы можете не сможет создать это много процессы из-за общесистемной квоты пределы.

Я протестировал MAXIMUM_WAIT_OBJECTS на Windows XP, и это 64, так что, возможно, вы попали в «общесистемные ограничения квоты».

В этом посте предлагается использовать комбинацию LogonUser и CreateProcessAsUser , чтобы не нарушать эти ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...