我有一个用Visual C ++编写的程序,它是用Visual Studio 2005编译的,在Windows 2003上运行。
在程序中,它重复调用CreateProcess来启动一个只重复睡眠并向屏幕显示消息的程序,其中包含以下参数:
CreateProcess(app_pathname, (char*) full_app_name.chars(),
NULL, NULL, FALSE, CREATE_NEW_CONSOLE, 0, 0, &si, &pi)
并且提供了si:
memset( &si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags |= STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWDEFAULT;
si.lpTitle = (char*) cmdLine;
我观察到的是,如果我从服务运行此程序,则不会在124之后启动新进程,并且不会从CreateProcess()API调用返回任何错误。
但是,如果程序是从visual studio或命令行运行的,那么我没有这个限制。
我尝试更改“LogOn”选项卡以使用我从命令行运行的同一用户帐户,并更改了“允许服务与桌面进行操作”,但没有看到任何行为上的差异。从查看CreateProcess API以及在互联网上进行研究,我无法找到答案。对服务产生的进程数量有任何限制吗?