запуск по триггеру что это

Автоматизация запуска и остановки служб Windows с помощью Service Trigger Editor

Предоставляемых штатной оснасткой возможностей вполне достаточно, но если вам нужно больше контроля и вы считаете себя достаточно продвинутым пользователем, воспользуйтесь Service Trigger Editor — бесплатный инструмент, позволяющий управлять запуском и остановкой служб с помощью триггеров. Проще говоря, эта утилита позволяет автоматизировать процедуру включения и отключения служб при наступлении определенного события. Какого именно, это уже решать вам.

Графический интерфейс Service Trigger Editor представлен двумя горизонтальными вкладками. В верхней отображаются все доступные в системе службы, нижняя служит для отображения созданных пользовательских правил. Активные службы отмечены зеленым кружком, содержащие триггеры — синими иконками в виде пазла. Поддерживается остановка активных и запуск отключенных служб из контекстного меню.

Чтобы создать новое правило для выделенной службы, нажмите на панели инструментов кнопку «Add Trigger» и укажите в окне запустившегося мастера необходимые условия.

Основных действий доступно только два — запуск службы (Start) и остановка службы (Stop), а вот с условиями не всё так просто.

К примеру, чтобы отключить службу при подсоединении к компьютеру некоего устройства, нужно вручную ввести GUID данного устройства, определив его в свойствах на вкладке «Сведения». Аналогичным образом обстоят дела с поставщиками событий, блокировкой и открытием портов.

Источник

Автоматический (запуск по триггеру) и ручной (запуск по триггеру) для служб Windows

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

В этом посте мы поговорим о том, что такое автоматический (запуск по триггеру) и ручной (запуск по триггеру) и что они означают для служб Windows.

Автоматический (запуск по триггеру) и ручной (запуск по триггеру)

Откройте оснастку «Службы Windows» или панель «Диспетчер служб». Наряду с названием службы он также будет отображать столбцы с подробными сведениями об описании, состоянии, типе запуска и входе в систему как. В этом посте нас интересует Тип запуска. В основном типы запуска:

Что означает автоматический тип запуска?

Многие службы настроены на запуск с Windows, то есть при загрузке компьютера. Им не нужно разрешение пользователя, но они проходят через Локальная система Пользователь, авторизованный Windows для выполнения множества административных должностей.

В оснастке «Службы» дважды щелкните, чтобы открыть любые службы, и перейдите на вкладку «Общие». Тип запуска для службы, которая настроена на запуск с загрузкой, будет установлен на автоматический.

Что означает тип запуска вручную?

Эти типы служб не запускаются при загрузке компьютера. Они запускаются из-за какой-то другой зависимой службы или события. Он также может быть инициирован пользователем компьютера через диспетчер служб.

Что означает триггерный запуск?

Я уверен, что к этому моменту вы уже заметили, что некоторые из сервисов имеют дополнительные условия наряду с типом запуска — Запуск триггера. Это может быть как для Руководство или же Автоматический Тип запуска. Проще говоря, Trigger Start означает, что служба может быть запущена или остановлена ​​событиями операционной системы.

Эти триггеры играют важную роль, потому что без них Служба должна продолжать работать в фоновом режиме, потребляя ресурсы, энергию и батарею. Windows предлагает то, что называется Триггерные события службы. Разработчики могут развернуть Службу и зарегистрироваться для запуска или остановки при возникновении триггерного события.

Классический пример — то, что вы испытываете каждый день. Каждый раз, когда вы загружаете файл, антивирус автоматически проверяет его. Другой пример: когда устройство впервые подключается к компьютеру, Windows начинает поиск и загрузку драйверов.

Тем не менее, не все службы имеют триггерный запуск. Только когда у службы есть хотя бы один триггер, в скобках будет отображаться Запуск триггера напротив соответствующей службы. Преимущество триггеров в том, что они не только устраняют необходимость постоянно поддерживать их работу, но также избавляются от опроса, активного ожидания четности и т. Д.

Как удалить триггеры из службы?

Windows SDK предлагает утилиту командной строки, Sc.exe, который можно использовать для управления Сервисом. Теперь, например, если вы хотите удалить триггер из службы Xbox в Windows, выполните следующие действия.

Читайте также:  Как увидеть во сне суженого со вторника на среду

Запросить услугу

Удалить триггер

Данные для таких триггеров хранятся в реестре или в групповой политике (компьютер или пользователь).

Надеюсь, этот пост немного прояснил ситуацию.

Связанное чтение: Службы Windows: все, что вы хотели о них знать.

Источник

Программирование служб Windows 7 с триггерами (ч.1)

Мы предпочитаем считать службы запущенными задачами, работающими в фоновом режиме и не затрагивающими операции пользователя. Службы в Windows отвечают за все виды фоновой активности, начиная со службы Remote Procedure Call (RPC), Printer Spooler и вплоть до службы Network Location Awareness.

Во-вторых, эти растрачиваемые ресурсы непосредственным образом сказываются на потреблении электроэнергии. Чем больше нагрузки мы даем на ЦП, тем больше электроэнергии компьютер потребляет. Это может быть критически важно для ноутбуков и может сократить время работы батареи на несколько часов.

В-третьих, постоянная работа непродуктивного программного обеспечения может привести к утечкам памяти и общей нестабильности системы. Это может привести к сбою в работе приложения и, в конце концов, компьютера.

Учитывая все вышесказанное, вы можете удивиться, почему так много разработчиков настраивают свои службы на постоянную работу, если у них имеется другая возможность. Даже до Windows 7 было доступно несколько вариантов запуска служб:

К сожалению, многие ISV (включая саму Microsoft) продолжают настраивать свои службы на автоматический (Automated) или автоматический отложенный запуск (Automatic Delayed), поскольку для всех это представляется простейшим решением. Служба просто работает 24х7 и всегда доступна, устраняя любую необходимость проверки зависимостей или того, запущена ли служба.

Можно привести множество примеров существующих служб, которые могут расходовать куда меньше ресурсов и стать безопаснее, не работая 24х7. Например, подумайте о службе обновлений, которая проверяет наличие новых обновлений для приложения. Если компьютер не подключен к сети и не имеет IP-адреса, зачем работать этой службе? Она ничего не может сделать, так зачем оставлять работающей программу, которая ничего не делает? Подумайте о службе управления политиками, которая используется при изменении групповых политик или при подключении компьютера к домену или отключении от него, но сейчас, когда компьютер подключен к моей домашней сети, служба, опять же, работает впустую.

Появление служб с запуском по триггеру

Решение вышеуказанных проблем заключается в выведении службы из «состояния постоянной работы» в другие виды фоновой активности, такие как запланированные задачи или службы, запускаемые триггером. Эта статья посвящена Windows 7 Trigger Start Services. О Windows 7 Scheduled Tasks можно сказать очень много полезного, что и будет сделано в последующих статьях.

Службы, запускаемые по триггеру (англ. trigger-start service), впервые появились в Windows 7. По сути, это обычная служба, которую вы можете настроить на запуск (или остановку) в случае срабатывания триггера, то есть в определенном случае или состоянии, которые вы сами задаете (например, когда становится доступным IP-адрес или когда он исчезает). Ниже приведен список доступных триггеров, с помощью которых вы можете настроить режим запуска вашей службы:

Последний пункт указывает на расширяемость. Будучи разработчиком, вы можете настроить любое событие ETW в качестве триггера для службы, что дает вам очень хороший инструмент для управления запуском и остановкой служб вашего приложения.

Так что же такое триггер?

Триггер состоит из:

Работа с Trigger Start Services
К сожалению, в пользовательском интерфейсе консоли Windows 7 Services MMC нет графического представления Trigger Start Services. Однако у вас есть две возможности. Вы можете по-прежнему использовать старый добрый sc.exe (программа командной строки Service Configuration) или воспользоваться методом WIN32 ChangeServiceConfig2 для программной настройки опций запуска службы, как будет показано в этой статье.

Использование SC.exe для запроса данных триггера службы (Query Service Trigger Information)
Пора повеселиться. Начнем с получения сведений о конфигурации некоторых служб. Общая форма для использования конфигурации службы выглядит следующим образом:

[ist]1. Откройте меню «Пуск».
2. Введите CMD в поле поиска.
3. Выберите cmd.exe.
4. Введите sc qtriggerinfo w32time и нажмите клавишу ввода.
Вот, как это должно выглядеть:

Как вы можете видеть, мы запросили данные триггера службы W32time, которая настроена на запуск при подключении компьютера к домену и остановку при отключении от домена.

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

Microsoft в Windows 7 обновила приложение командной строки sc.exe для поддержки конфигурации и получения сведений о поддерживаемых триггерах. Введите sc triggerinfo в окне Windows Shell и нажмите клавишу ввода. Результат будет похож на тот, что приведен ниже, и будет содержать все триггеры и сведения о том, как настроить службы на их использование.

ПАРАМЕТРЫ:
start/device/UUID/HwId1/.
start/custom/UUID/data0/..
stop/custom/UUID/data0/.
start/strcustom/UUID/data0/..
stop/strcustom/UUID/data0/..
start/networkon
stop/networkoff
start/domainjoin
stop/domainleave
start/portopen/параметр
stop/portclose/параметр
start/machinepolicy
start/userpolicy
delete

Программная настройка Trigger Start Services при помощи ChanceServiceConfig2
Более интересным с точки зрения разработчиков аспектом является создание служб, зависящих от триггера, и использование кода для конфигурации службы. В Windows 7 вы можете использовать функцию ChangeServiceConfig2 для настройки данных триггера службы и функцию QueryServiceConfig2 для их вызова.

BOOL _SetServiceToStartOnDeviceTrigger()
<
BOOL fResult = FALSE;

SC_HANDLE hScm = OpenSCManager(
NULL, //local machine
NULL, //active database
SC_MANAGER_CONNECT);

LPCWSTR lpszDeviceString = L»USBSTOR\\GenDisk»;
SERVICE_TRIGGER_SPECIFIC_DATA_ITEM deviceData = <0>;
deviceData.dwDataType = SERVICE_TRIGGER_DATA_TYPE_STRING;
deviceData.cbData =
(wcslen(lpszDeviceString)+1) * sizeof(WCHAR);
deviceData.pData = (PBYTE)lpszDeviceString;

SERVICE_TRIGGER st;
st.dwTriggerType =
SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL;
st.dwAction = SERVICE_TRIGGER_ACTION_SERVICE_START;
st.pTriggerSubtype = (GUID *) &GUID_USBDevice;
st.cDataItems = 1;
st.pDataItems = &deviceData;

SERVICE_TRIGGER_INFO sti;
sti.cTriggers = 1;
sti.pTriggers = &st;
sti.pReserved = 0;

fResult = ChangeServiceConfig2(
hService,
SERVICE_CONFIG_TRIGGER_INFO,
&sti);
>
CloseServiceHandle (hService);
>
CloseServiceHandle (hScm);

if(!fResult)
<
printf(«Service trigger registration failed (%d)\n»,
GetLastError());
>
return fResult;
>

SERVICE_TRIGGER_SPECIFIC_DATA_ITEM задает тип события триггера. Он содержит данные о событии триггера службы. В нашем случае, мы задаем строку, описывающую подключение USB-диска.

Затем мы задаем структуру SERVICE_TRIGGER, которая представляет события триггеру службы. Заметьте, что именно здесь мы задаем тип триггера (подключение устройства), действие (запуск службы), и подтип триггера (определенный род USB-дисков). Следом мы определяем конкретное устройство, которое будет вызывать службу. Заметьте, что вы можете задать список устройств и их GUID. Также следует отметить, что мы не хотим срабатывания триггера запуска службы при подключении любого USB-устройства, как то мышь или камера. Мы хотим, чтобы служба запускалась только при появлении USB-диска.

Наконец, мы задаем структуру SERVICE_TRIGGER_INFO, которая содержит данные события триггера службы. Эта структура просто указывает на структуру SERVICE_TRIGGER, которую мы задали ранее, и количество триггеров, число которых в данном случае равно одному.

Теперь мы можем вызвать функцию ChanceServiceConfig2 и пройти дескриптор к службе, которую мы хотим настроить, параметр SERVICE_CONFIG_TRIGGER_INFO, который указывает, что мы хотим настроить триггер службы, и Null.

Вот и все. Если вы все сделали правильно, то служба запуститься при подключении USB жесткого диска.

Вы можете узнать больше о Windows 7 при помощи Windows 7 Training Kit for Developers или просмотрев видео, посвященные Windows 7, на Channel 9.

Вы также можете потренироваться в работе с Windows 7 Trigger Start Services при помощи тренинга Windows 7 Online, являющегося частью Channel 9 Learning Center.

Ссылки по теме

Помощь
Задать вопрос
программы
обучение
экзамены
компьютеры