Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Политики и процессы (http://forum.oszone.net/showthread.php?t=174334)

thebas 28-04-2010 15:50 1402653

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

Awejk 28-04-2010 16:20 1402679

А как запускаешь процесс? И что он делает?

thebas 28-04-2010 16:38 1402695

Код:

    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 1402721

6-ой параметр этой функции, попробуй там указать DETACHED_PROCESS если не поможет этот, попробуй поиграться с другими флагами

thebas 28-04-2010 17:52 1402747

detach непомог завтра буду играцца с другими, большое спасибо.

Awejk 28-04-2010 18:15 1402760

Обрати внимание и на другие входящие параметры этой функции. Потом расскажешь - самому интересно.

thebas 29-04-2010 13:07 1403260

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

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

thebas 29-04-2010 15:00 1403366

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

thebas 03-06-2010 16:35 1426715

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


Время: 03:14.

Время: 03:14.
© OSzone.net 2001-