IsProcessInJob с GetCurrentProcess всегда верным - PullRequest
0 голосов
/ 27 августа 2011

(Visual Studio 2010 - C ++) Здравствуйте,

Я пытаюсь установить JOB для процесса, но AssignProcessToJobObject возвращает ACCESS_DENIED, а IsProcessInJob возвращает TRUE.

Я вызываю IsProcessInJob для процесса сразу после вызова CreateProcess (Suspended) и завершаю попытку вызова 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?

1 Ответ

1 голос
/ 28 августа 2011

Я нашел.

По какой-то причине мой процесс был дочерним по отношению к 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))
...

Спасибо за ваши комментарии, терпение и время.

...