0

(Visual Studio 2010-C ++)こんにちは、

JOBをプロセスに設定しようとしていますが、AssignProcessToJobObjectはACCESS_DENIEDを返し、IsProcessInJobはTRUEを返します。

CreateProcess(Suspended)を呼び出した直後にIsProcessInJobをプロセスに呼び出し、プロセスを使用してIsProcessInJobを呼び出しようとしました(メインエントリポイントの数行後)。trueが返されます。

void main()
{   
    BOOL bIsInJob;

    IsProcessInJob( GetCurrentProcess(), NULL, &bIsInJob );
    printf( "IsProcessInJob (me): %s\n", bIsInJob ? "true" : "false" ); 
// RET True ! inside and outside IDE
   ...

誰かが前にそれを見ましたか?

助けてくれてありがとう。ソース: 親プロセスが強制終了されたときに子プロセスを強制終了 するWindowsで子プロセスを自動的に破棄するにはどうすればよいですか?

4

1 に答える 1

1

見つけました。

何らかの理由で、私のプロセスはExplorer.exeの子であり、Explorerは私のプロセスにジョブを設定し、メモ帳(私の子)はこのジョブを継承します。

ProcessExplorerで見るまで見つけることができませんでした。Winlogon-> Explorerの下にあるので、プロセスリストに自分のプロセスが表示されないことがわかりました。

解決策:CREATE_BREAKAWAY_FROM_JOB

if (!CreateProcess(L"c:\\windows\\system32\\notepad.exe",  L"", NULL, NULL, FALSE,
        CREATE_BREAKAWAY_FROM_JOB, NULL, NULL, &startupInfo, &processInformation))
...

コメント、忍耐、そして時間をありがとう。

于 2011-08-28T14:33:55.347 に答える