Читайте также: |
|
Перед запросом к SCM на запуск сервиса, информация о сервисе должна быть занесена в базу данных SCM. Регистрация сервиса выполняется программой установки, которая должна быть SCP-приложением, путем вызова функции SreateService. В результате SCM посылается сообщение о том, где будет находится данный сервис.
Программа установки должна передать функции SreateService некоторые параметры:
1) тип сервиса – выполняется ли сервис в собственном процессе или разделяет с другими сервисами общее адресное пространство;
2) местонахождения его исполняемого файла;
3) необязательное экранное имя;
4) необязательные имя и пароль для запуска сервиса в контексте защиты определенной учетной записи;
5) тип запуска – запускается ли он автоматически при загрузки системы или вручную под управлением SCP;
6) код, указывающий, как система должна реагировать на ошибку при запуске сервиса;
7) необязательную информацию о моменте запуска относительно других сервисов, если сервис запускается автоматически.
Диспетчер управления службами (SCM) хранит каждую характеристику как параметр в разделе реестра, созданном для данного сервиса. В таблице 1 перечислены характеристики сервиса, многие из которых применимы и к драйверам.
Таблица 1. Параметры реестра для сервисов и драйверов
Параметр | Значение | Описание |
Start | SERVICE_ROOT_START (0) SERVICE_SYSTEM_START (1) SERVICE_AUTO_START (2) SERVICE_DEMAND_START (3) SERVICE_DISABLED (4) | Ntldr или Osloader предварительно загружают драйвер, чтобы во время загрузки он находился в памяти. Подобные драйверы инициализи-руются непосредственно перед драй-верами типа SERVICE_SYSTEM_START. Драйвер загружается и инициализи-руется после инициализации драйверов типа SERVICE_BOOT_START. Драйвер или сервис, запускаемый SCM после запуска SCM-процесса Services.exe. Драйвер или сервис запускается SCM по требованию. Драйвер или сервис не загружается и не инициализируется. |
ErrorControl | SERVICE_ERROR_IGNORE(0) SERVICE_ERROR_NORMAL(1) SERVICE_ERROR_SEVERE(2) SERVICE_ERROR_SRITICAL(3) | Диспетчер ввода-вывода игнорирует возвращаемые драйвером или сервисом коды ошибок. Предупреждения не выводятся и не регистрируются. Если драйвер или сервис сообщает об ошибке, выводится предупреждение. Если драйвер или сервис сообщает об ошибке и последняя удачная конфигурация еще не используется, загружается именно эта конфигурация, если она уже используется, загрузка продолжа-ется. Если драйвер или сервис сообщает об ошибке и последняя удачная конфигурация еще не используется, загружается именно эта конфигурация. Если она уже используется, загрузка останавлива- ется и выводится «синий экран». |
Type | SERVICE_KERNEL_DRIVER(1) SERVICE_FILE_SYSTEM_ DRIVER (2) SERVICE_ADAPTER (4) SERVICE_RECOGNIZER_ DRIVER (8) SERVICE_WIN32_OWN_ PROCESS (16) SERVICE_WIN32_SHARE_ PROCESS (32) SERVICE_INTERACTIVE_ PROCESS (256) | Драйвер устройства Драйвер файловой системы режима ядра Устаревшее значение Драйвер, распознающий файловую систему Сервис выполняется в собственном процессе, предназначенном только для него. Сервис выполняется в процессе, ис- Пользуемом несколькими сервисами. Сервис может выводить на консоль окна и принимать ввод от пользователя. |
Group | Имя группы | Драйвер или сервис инициализиру-ется при инициализации этой группы. |
Tag | Номер тэга | Указывает порядковый номер в по- следовательности инициализации группы. Этот параметр не при-меним к сервисам. |
ImagePath | Путь к исполняемому файлу сер- Виса или драйвера | Если ImagePath не определен, диспетчер ввода-вывода ищет драй-верыв \Windows\System32\Drivers, а SCM использует Windows-функции для поиска образа по значению переменной окружения PATH |
DependOnGroup | Имя группы | Драйвер или сервис не загружается пока не будет загружен драйвер или сервис из указанной группы |
DependOnService | Имя сервиса | Сервис не загружается, пока не бу- дет загружен указанный сервис. Этот параметр неприменим к драйверам устройств, кроме тех, у которых тип запуска определен как SERVICE_AUTO_START |
ObjectName | Обычно Local System, но может быть именем учетной записи. Например,.\Administrator | Указывает учетную запись, под ко- торой будет работать сервис. Усли ObjectName не определен, использется учетная запись Local System. Этот параметр не применим к драйверам устройств. |
DisplayName | Имя сервиса | Имя сервиса, показываемое сервисным приложениям на экране. Если это имя не указано, именем сервиса считается его имя в реестре. |
Description | Описание сервиса | Строка длиной до 32767 байтов. |
FailureActions | Описание действий SCM при неожиданном завершении процесса сервиса | Действия при сбое включают перезапуск процесса, перезагрузку системы и запуск указанной программы. Этот параметр неприменим к драйверам. |
FailureCommand | Командная строка программы | SCM считывает этот параметр, только если в FailureActions указана необходимость запуска какой-либо программы при сбое сервиса. Этот параметр неприменим к сервисам. |
Security | Дескриптор защиты | Содержит дескриптор защиты, оп- Ределяющий, кто и с какими правами может получать доступ к объекту сервиса, соединенному с SCM. |
К драйверам устройств применимы три значения параметра Type. Они используются драйверами устройств, которые также хранят свои параметры в разделе реестра Services. SCM отвечает за запуск драйверов со значение Start, равным SERVICE_AUTO_START или SERVICE_DEMAND_START, поэтому база данных SCM естественным образом включает и драйверы. Сервисы используют другие типы: SERVICE_WIN32_OWN_PROCESS и SERVICE_WIN32_SHARE_PROCESS, которые являются взаимоисключающими. Программы, использующие более одного сервиса, указывают тип SERVICE_WIN32_SHARE_PROCESS. При этом экономятся ресурсы системы, связанные с диспетчеризацией процессов. Но потенциальный недостаток этой схемы в том, что работа всех сервисов данного процесса прекращается, если один из них вызовет ошибку, из-зи которой завершается процесс. Кроме того, все сервисы одного процесса должны выполняться под одной учетной записью.
Зарегистрировав сервис, программа установки или управляющее приложение может запустить его, вызвав функцию StartService. Поскольку некоторые сервисы необходимо инициализировать при запуске системы, программа установки должна зарегистрировать сервис как запускаемый автоматически.
Дата добавления: 2015-08-13; просмотров: 53 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Учетные зависи сервиса | | | Выполнение сервиса |