0

Visual Studio 2005 でコンパイルされ、Windows 2003 で実行される Visual C++ で書かれたプログラムがあります。

プログラム内で、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 呼び出しからエラーが返されないことです。

ただし、プログラムがビジュアル スタジオまたはコマンド ラインから実行された場合、この制限はありません。

コマンドラインから実行しているのと同じユーザーアカウントを使用するように「ログオン」タブを変更しようとしましたが、「デスクトップとの対話をサービスに許可する」を変更しましたが、動作に違いは見られませんでした。CreateProcess API を調べたり、インターネットで調査したりしても、これに対する答えを見つけることができませんでした。サービスによって生成されるプロセスの数に制限はありますか?

4

0 に答える 0