Jump to content

Менеджер по контролю услуг

Диспетчер управления службами ( SCM ) — это специальный системный процесс в Windows NT семействе операционных систем , который запускает, останавливает и взаимодействует со служебными процессами Windows. [1] Он расположен в %SystemRoot%\System32\services.exe исполняемый файл. Процессы обслуживания взаимодействуют с SCM через четко определенный API , и тот же API используется внутри интерактивных инструментов управления службами Windows, таких как MMC . оснастка Services.msc и утилита управления службами командной строки sc.exe. Завершение этого файла используется как способ вызвать синий экран смерти .

Выполнение

[ редактировать ]

Исполняемый файл SCM, Services.exe, запускается как консольная программа Windows и запускается процессом Wininit на раннем этапе запуска системы . [2] Его основная функция, SvcCtrlMain(), запускает все службы, настроенные на автоматический запуск. Сначала инициализируется внутренняя база данных установленных служб путем чтения следующих двух ключей реестра:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List, содержащий имена и порядок групп услуг. Ключ реестра каждой службы содержит необязательный Group значение, которое определяет порядок инициализации соответствующей службы или драйвера устройства по отношению к другим группам служб.
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, который содержит актуальную базу данных служб и драйверов устройств и считывается во внутреннюю базу данных SCM. [3] SCM считывает данные каждого сервиса Group значение, а также зависимости порядка загрузки от их DependOnGroup и DependOnService ключи реестра. [4]

На следующем этапе основная функция SCM SvcCtrlMain() вызывает функцию ScGetBootAndSystemDriverState() функция, которая проверяет, были ли успешно загружены драйверы устройств, которые должны быть запущены во время загрузки или запуска системы, а те, которые не удалось это сделать, сохраняются в списке, называемом ScFailedDrivers. Тогда именованный канал \Pipe\Ntsvcs создается как интерфейс удаленного вызова процедур между SCM и SCP (процессами управления услугами), которые взаимодействуют с конкретными службами.

Далее он вызывает ScAutoStartServices() функция, которая циклически перебирает все службы, отмеченные как автозапуск, обращая внимание на рассчитанные зависимости порядка загрузки. В случае циклической зависимости отмечается ошибка, и служба, зависящая от службы, принадлежащей группе, следующей в порядке загрузки, пропускается. Для служб отложенного автозапуска группировка не имеет никакого эффекта, и они загружаются на более позднем этапе запуска системы. [5]

Для каждой службы, которую он хочет запустить, SCM вызывает ScStartService() функция, которая проверяет имя файла, в котором запускается процесс службы, гарантируя, что учетная запись, указанная для службы, совпадает с учетной записью, под которой запускается процесс службы. Каждая служба, которая не запускается в System вход в учетную запись осуществляется путем вызова LSASS функции LogonUserEx(), для которого процесс LSASS ищет «секретные» пароли, хранящиеся в HKLM\SECURITY\Policy\Secrets\ ключ реестра, которые были сохранены SCP с использованием LsaStorePrivateData() API, когда сервис был изначально настроен. [6]

Далее ScLogonAndStartImage() Функция вызывается для каждого сервиса, процесс обслуживания которого еще не запущен. Сервисные процессы создаются в приостановленном состоянии через CreateProcessAsUser() API. Прежде чем возобновится выполнение сервисного процесса, именованный канал \Pipe\Net\NtControlPipeX (где X — число, увеличивающееся для каждой итерации обслуживания), который служит каналом связи между SCM и процессом обслуживания. Сервисный процесс подключается к каналу, вызывая StartServiceCtrlDispatcher() функция, после чего SCM отправляет службе команду «запуск». [7]

Службы отложенного автозапуска

[ редактировать ]

Службы отложенного автозапуска были добавлены в Windows Vista , чтобы решить проблему длительного запуска системы, а также ускорить запуск критически важных служб, которые нельзя отложить. [8] Первоначально метод автозапуска инициализации служб был разработан для важных системных служб, от которых зависят другие приложения и службы. SCM инициализирует отложенные службы только после обработки всех служб автозапуска без задержки, вызывая ScInitDelayStart() функция. Эта функция ставит в очередь задержанный (по умолчанию 120 секунд) рабочий элемент, связанный с соответствующим рабочим потоком. Помимо инициализации после задержки, других различий между услугами с задержкой и без задержки нет.

Драйверы устройств

[ редактировать ]

Услуги, чьи Type значение реестра SERVICE_KERNEL_DRIVER или SERVICE_FILE_SYSTEM_DRIVER обрабатываются особым образом: они представляют собой драйверы устройств, для которых ScStartService() называет ScLoadDeviceDriver() функция, загружающая соответствующий драйвер (обычно файл с расширением .sys), который должен находиться в %SystemRoot%\System32\Drivers\ каталог. С этой целью NtLoadDriver системный вызов , и вызывается SeLoadDriverPrivilege добавляется в процесс SCM.

Буквы сетевых дисков

[ редактировать ]

SCM предоставляет дополнительную функциональность, совершенно не связанную со службами Windows: он уведомляет приложения с графическим интерфейсом , такие как Windows Explorer , когда создается или удаляется буквенное соединение сетевого диска, путем широковещательной рассылки сообщений Windows. WM_DEVICECHANGE.

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Руссинович, Соломон и Ионеску (2009 :79) [ нужна полная цитата ]
  2. ^ Руссинович, Соломон и Ионеску (2009 : 291)
  3. ^ «База установленных сервисов» . Сеть разработчиков Microsoft . Проверено 6 марта 2011 г.
  4. ^ Руссинович, Соломон и Ионеску (2009 : 292)
  5. ^ Руссинович, Соломон и Ионеску (2009 : 294)
  6. ^ Руссинович, Соломон и Ионеску (2009 : 295)
  7. ^ Руссинович, Соломон и Ионеску (2009 : 296)
  8. ^ Руссинович, Соломон и Ионеску (2009 : 297)
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b4dfd5cc607b2ef23246f6cb97c28300__1641175380
URL1:https://arc.ask3.ru/arc/aa/b4/00/b4dfd5cc607b2ef23246f6cb97c28300.html
Заголовок, (Title) документа по адресу, URL1:
Service Control Manager - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)