Политики и процессы
Добрый день господа, возникла проблемка: Необходимо чарез политику запускать процесс время выполнения которого занимает довольно значительное время(3мин). Ожидать и смотреть на заставку "выполнение скриптов запуска" вариант неприемлимый. Я написал прогу которая запускает етот процесс и сразу выходит. При проверке оказалось что винда прибивает все дочерние процессы запущенные основным после завершения основного процесса.
Как бы мне ето обойти?
|
А как запускаешь процесс? И что он делает?
|
Код:
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
AfxMessageBox("Before start process");
if( CreateProcess( NULL, // No module name (use command line)
"\\\\someshare\\somefile", // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ) // Pointer to PROCESS_INFORMATION structure
)
............
Процесс запихивает таблицу постгрес вскую инфу про комп SID,name, и т.п. использует обращения к WMI и прямое обращение к драйверам HDD
Собственно из-за обращений к wmi пришлось вставить задержку на 2-е минуты в код, т.к. иногда служба не успевает поднятся до запуска приложения(есть очень старые компы по 256 оперативы 1Гц проц и на етом както живет антивирь СМС и т.п.).
|
6-ой параметр этой функции, попробуй там указать DETACHED_PROCESS если не поможет этот, попробуй поиграться с другими флагами
|
detach непомог завтра буду играцца с другими, большое спасибо.
|
Обрати внимание и на другие входящие параметры этой функции. Потом расскажешь - самому интересно.
|
C другими параметрами не игрался уж слишком их много :) , зато выяснил, что процесс запускается в job-е и CREATE_BREAKAWAY_FROM_JOB
"Акес денаед" :(
Видимо все процессы входящие в job прибиваются после выхода из родителя :(
Как обойти не представляю, использовать sheduler както по детски , да и кто даст гарантию что он на всех машинах работает :(
|
Появилась идея находу поменять job SetInformationJobObject дабы выставить флаг JOB_OBJECT_LIMIT_BREAKAWAY_OK
Проблема которую никак не могу решить где взять lpName job-а к которому принадлежит текущий процесс для передачи в OpenJobObject.
|
Время: 03:14.
© OSzone.net 2001-