Тайный страж Windows: как диспетчер управления службами работает незаметно?

При запуске системы Windows многие службы работают в фоновом режиме, что является важным краеугольным камнем стабильности операционной системы. Запуск и управление этими услугами в основном входит в обязанности менеджера по контролю услуг (SCM). SCM — это специальный системный процесс, работающий в операционной системе серии Windows NT, отвечающий за запуск, остановку и взаимодействие со служебными процессами Windows.

Основная функциональность SCM начинается с его главной функции SvcCtrlMain(), которая запускает все службы, настроенные на автоматический запуск.

Исполняемый файл SCM services.exe находится в %SystemRoot%\System32\ и запускается процессом Wininit на раннем этапе запуска системы. Когда SCM начинает работать, он сначала инициализирует свою внутреннюю базу данных установленных служб, что включает в себя чтение определенных ключей реестра.

В частности, он инициализирует внутреннюю базу данных, считывая следующие два ключа реестра:

<ул>
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List, этот ключ содержит имена групп служб и их порядок.
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, этот ключ содержит фактические данные служб и драйверов устройств.
  • SCM определяет порядок загрузки сервисов на основе значения группы и зависимостей каждого сервиса. Если в ходе этого процесса будет обнаружена циклическая зависимость, SCM зарегистрирует ошибку и пропустит службу, которая зависит от поздно загруженной группы.

    Следующим шагом в SCM является проверка успешной загрузки драйверов устройств, которые должны запускаться при запуске системы, и сохранение неисправных драйверов в списке под названием ScFailedDrivers.

    Затем SCM вызывает функцию ScAutoStartServices(), которая перебирает все службы, отмеченные для автоматического запуска, и запускает их соответствующим образом. Для каждой службы SCM вызывает функцию ScStartService(), чтобы гарантировать, что процесс службы выполняется под правильной учетной записью. Если служба не запущена под учетной записью System, SCM вызывает функцию LSASS LogonUserEx() для получения «секретного» пароля, который был надежно сохранен при первоначальной настройке службы.

    Мало того, существует еще и особый тип услуг — услуга отложенного автоматического запуска. Этот тип службы был представлен в Windows Vista для решения проблемы медленного запуска системы. SCM не начнет инициализацию служб отложенного автоматического запуска до тех пор, пока не будут обработаны все службы автоматического запуска без отложенного запуска.

    Хотя запуск этих служб происходит с задержкой, они ничем не отличаются от других служб, за исключением порядка, в котором они запускаются.

    Стоит отметить, что SCM также занимается непосредственно службами драйверов устройств. Значение регистрации типа этих служб — SERVICE_KERNEL_DRIVER или SERVICE_FILE_SYSTEM_DRIVER. Когда SCM вызывает ScStartService(), он далее вызывает функцию ScLoadDeviceDriver() для загрузки соответствующего драйвера.

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

    Такая конструкция позволяет пользователям лучше управлять системными ресурсами и службами, обеспечивая бесперебойную работу операционной системы.

    Однако, несмотря на важную роль, которую SCM играет в запуске системы, многие пользователи на самом деле не понимают, как она работает. За каждой операцией SCM стоит сложная и эффективная технология. Фактически, она позволяет пользователям использовать, казалось бы, обычные приложения и сервисы без каких-либо препятствий.

    Как будет развиваться SCM в будущих версиях Windows, чтобы удовлетворять все более разнообразные потребности пользователей?

    Trending Knowledge

    Секрет автоматического запуска служб: как система Windows ускоряет запуск?
    В современную цифровую эпоху быстрый запуск и эффективная работа системы чрезвычайно важны для пользователей. Система Windows может запускать множество служб за короткий промежуток времени. За этим ст
    Тайна синего экрана: какие неожиданные изменения произойдут, если завершить работу services.exe?
    <р> В современных операционных системах Windows диспетчер управления службами (SCM) или Services.exe является одним из основных компонентов работы системы. Этот процесс отвечает за запуск,

    Responses