Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

## Создание надежного планировщика с подпроцессами для разных версий Windows: как избежать блокировки антивирусами

Delphi , Синтаксис , Ошибки и Исключения

Создание надежного планировщика с подпроцессами для разных версий Windows: как избежать блокировки антивирусами

Программирование на языке Object Pascal в среде Delphi часто требует глубокого понимания работы операционной системы Windows, особенно когда речь заходит о создании служб и планировщиков задач. Вопрос пользователя dd касается возможности запуска коротких приложений из службы, что является ключевым моментом для создания надежного планировщика, работающего на различных версиях Windows, начиная с XP и заканчивая Windows 7.

Проблема и контекст

Разработчик создал планировщик задач, который изначально был реализован с использованием потоков, но из-за утечек памяти и необходимости разделения задач, было принято решение перейти к использованию подпроцессов. Планировщик запускает подпроцессы через определенные интервалы времени. Однако, возникает вопрос: может ли служба запускать приложения? Разработчик хочет использовать планировщик как процесс-ферму, аналогично тому, как это реализовано в PostgreSQL для Windows, но при этом избегать блокировки подпроцессов антивирусными программами и обеспечить им все необходимые права для выполнения.

Решение проблемы

Согласно подтвержденному ответу, службы могут запускать другие программы. Для этого можно использовать функцию CreateProcess или CreateProcessAsUser, чтобы запустить процесс в контексте пользователя, что особенно важно для визуальных приложений, требующих интерактивной сессии. Для того чтобы запущенный процесс был дочерним процессом основной (планировщика) службы, можно использовать эти же функции, что позволит подпроцессам наследовать права от родительского процесса.

Примеры кода

uses
  Winapi.Windows;

var
  StartupInfo: TStartupInfo;
  ProcessInformation: TProcessInformation;
begin
  ZeroMemory(@StartupInfo, SizeOf(TStartupInfo));
  with StartupInfo do
  begin
    cb := SizeOf(TStartupInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := SW_HIDE; // Скрыть окно запускаемого процесса
  end;
  if CreateProcess(nil, PChar('C:\path\to\your\app.exe'), nil, nil, FALSE,
    CREATE_NO_WINDOW, nil, nil, @StartupInfo, ProcessInformation) then
  begin
    // Процесс успешно запущен
    // ProcessInformation.hProcess, ProcessInformation.hThread могут быть использованы для управления процессом
  end;
end;

Важные моменты

  • При запуске визуальных приложений необходимо использовать CreateProcessAsUser для запуска в контексте пользователя.
  • Для обеспечения максимальной совместимости с различными версиями Windows, начиная с XP, следует тщательно тестировать планировщик на целевых операционных системах.
  • Чтобы избежать блокировки антивирусами, можно попытаться настроить исключения для служб и подпроцессов, однако это может потребовать дополнительных прав администратора и тщательного планирования.

Заключение

Создание надежного планировщика с подпроцессами для разных версий Windows требует внимательного подхода к деталям и понимания механизмов работы операционной системы. Используя правильные инструменты и методы, разработчик может создать эффективное решение, которое будет работать стабильно и избегать блокировки со стороны антивирусных программ.

Создано по материалам из источника по ссылке.

Разработчик создаёт планировщик задач для разных версий Windows, используя подпроцессы, и ищет способы избежать блокировки антивирусами.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Ошибки и Исключения ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 12:57:03/0.0054528713226318/1