Войти

Показать полную графическую версию : [решено] Политики и процессы


thebas
28-04-2010, 15:50
Добрый день господа, возникла проблемка: Необходимо чарез политику запускать процесс время выполнения которого занимает довольно значительное время(3мин). Ожидать и смотреть на заставку "выполнение скриптов запуска" вариант неприемлимый. Я написал прогу которая запускает етот процесс и сразу выходит. При проверке оказалось что винда прибивает все дочерние процессы запущенные основным после завершения основного процесса.
Как бы мне ето обойти?

Awejk
28-04-2010, 16:20
А как запускаешь процесс? И что он делает?

thebas
28-04-2010, 16:38
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Гц проц и на етом както живет антивирь СМС и т.п.).

Awejk
28-04-2010, 17:08
6-ой параметр этой функции, попробуй там указать DETACHED_PROCESS если не поможет этот, попробуй поиграться с другими флагами (http://www.vsokovikov.narod.ru/New_MSDN_API/Process_thread/flags_create_process.htm)

thebas
28-04-2010, 17:52
detach непомог завтра буду играцца с другими, большое спасибо.

Awejk
28-04-2010, 18:15
Обрати внимание и на другие входящие параметры этой функции (http://www.vsokovikov.narod.ru/New_MSDN_API/Process_thread/fn_createprocess.htm). Потом расскажешь - самому интересно.

thebas
29-04-2010, 13:07
C другими параметрами не игрался уж слишком их много :) , зато выяснил, что процесс запускается в job-е и CREATE_BREAKAWAY_FROM_JOB
"Акес денаед" :(

Видимо все процессы входящие в job прибиваются после выхода из родителя :(
Как обойти не представляю, использовать sheduler както по детски , да и кто даст гарантию что он на всех машинах работает :(

thebas
29-04-2010, 15:00
Появилась идея находу поменять job SetInformationJobObject дабы выставить флаг JOB_OBJECT_LIMIT_BREAKAWAY_OK
Проблема которую никак не могу решить где взять lpName job-а к которому принадлежит текущий процесс для передачи в OpenJobObject.

thebas
03-06-2010, 16:35
По результату пришлось находу внедрять dll в winlogon, дабы изменить настройки job-обьекта. Сам джоб обьект искал перечислением всех обьектов: http://forum.sysinternals.com/howto-enumerate-handles_topic18892.html




© OSzone.net 2001-2012