0

誰か助けてくれませんか?jobobject を作成しようとしていますJOB_OBJECT_SECURITY_ONLY_TOKENが、SetInformationJobObject常にエラー コード 6 (無効なハンドル) で失敗します。これが私のコードです:

HANDLE Job( CreateJobObject( NULL, NULL ) );
if( !Job )
{
    wprintf( L"Could not create job object, error %d\n", GetLastError() );
    return 1;
}

JOBOBJECT_SECURITY_LIMIT_INFORMATION SecLimit = { 0 };
SecLimit.SecurityLimitFlags = JOB_OBJECT_SECURITY_ONLY_TOKEN;

if ( !SetInformationJobObject( Job, JobObjectSecurityLimitInformation, &SecLimit, sizeof( SecLimit ) ) )
{
    wprintf( L"Could not associate job with IO completion port, error %d\n", GetLastError() );
    return 1;
}

このアプリを XP で実行しようとしています。ありがとう!

4

1 に答える 1

0

SecLimit.JobToken制限されたトークンへの有効なハンドルが設定されていません。そのため、無効なハンドル エラーが発生しています。JOB_OBJECT_SECURITY_ONLY_TOKENフラグを使用する場合SecLimit.JobTokenは必須です。

ジョブ内のプロセスに制限付きトークンの使用を強制する特別な理由がない限り、JOB_OBJECT_SECURITY_ONLY_TOKEN フラグを使用しないでください。

あなたが参照している記事は、実際にはこのフラグが必要であるとは言っていないことに注意してください。このフラグを使用する場合、プロセスをジョブ オブジェクトに割り当てるには、プロセスを中断して作成する必要があることを示しているだけです。

于 2012-11-19T20:19:16.040 に答える