2011-08-27 3 views
0

(비주얼 스튜디오 2010 - C++) 안녕하세요,IsProcessInJob 사실이가는 요리

내가 처리 할 작업을 설정하기 위해 노력하고있어,하지만 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 
    ... 

누군가 본적이 있습니까?

도움 주셔서 감사합니다. 출처 : Kill child process when parent process is killed How do I automatically destroy child processes in Windows?

+0

성공했는지 확인하기 위해 IsProcessInJob의 반환 값을 확인 했습니까? 이 과정이 주 프로세스입니까, 아니면 하위 프로세스입니까? –

+0

IsProcessInJob (5 번째 줄)은 1을 반환합니다. 주 프로세스입니다. (자식 프로세스는 메모장입니다.) – Rafael

+0

프로세스가 실제로 작업에있는 것처럼 보입니다. 드문 경우이지만 컴퓨터에서 실행중인 소프트웨어 때문일 수 있습니다. 다른 소프트웨어가 설치되지 않은 테스트 머신에서 코드를 실행해볼 수 있습니까? –

답변

1

나는 발견했다.

어떤 이유로 든 프로세스가 Explorer.exe의 자식이었고 탐색기가 프로세스에 작업을 설정했고 메모장 (내 자식)이이 작업을 상속합니다.

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)) 
... 

감사합니다.

관련 문제