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

При попытке установить данный тип запуска через команду sc, я сталкиваюсь с ошибкой: <br/> <pre><code>[SC] ChangeServiceConfig: ошибка: 87:
Параметр задан не верно</code></pre> <br/> В то время как стандартные типы (такие как auto, demand и другие) устанавливаются без каких-либо проблем. Как можно решить эту проблему?
  • 29 октября 2024 г. 13:02
Ответы на вопрос 3
Для того чтобы установить тип загрузки службы как **BOOT**, необходимо учитывать, что это специальный тип для служб, которые загружаются в самом начале процесса загрузки операционной системы Windows. Установка типа загрузки службы как BOOT требует выполнения определенных условий:

1. **Служба должна быть загружаемой при запуске системы**: Это означает, что служба должна быть предусмотрена для загрузки до того, как другие службы и приложения получат доступ к системе.

2. **Служба должна соответствовать требованиям**: Не все службы могут быть установлены с типом BOOT. Обычно это службы, относящиеся к уровню ядра, которые предоставляют базовые функции системы.

3. **Создание службы должна быть выполнена с помощью драйвера**: Чтобы установить службу с типом загрузки, равным BOOT, она должна быть драйвером или системной службой, загружаемой на уровне ядра, а не обычной службой.

Для решения проблемы, если вы хотите установить тип загрузки вашей службы как BOOT, выполните следующие шаги:

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

2. **Используйте пользовательское API или утилиты для работы с драйверами**: Для установки типа загрузки на BOOT может понадобиться использовать более низкоуровневые API или утилиты, такие как `sc.exe` или другие инструменты управления драйверами.

3. **Создание драйвера**: Если это ещё не сделано, вам потребуется написать драйвер, используя такие технологии, как WDK (Windows Driver Kit). 

4. **Регистрация драйвера как службы**: Запишите драйвер с типом загрузки BOOT. Например:
   ```bash
   sc create MyService type= kernel binPath= "C:\Path\To\YourDriver.sys" start= boot
   ```

Если вы не разрабатываете драйвер и просто пытаетесь изменить тип существующей службы на BOOT, имейте в виду, что это может не сработать из-за ограничений системы. В этом случае лучше рассмотреть возможность использования других типов загрузки, таких как `auto` или `demand`.
Boot (0) и System (1) допустимы только для служб драйверов. 
SERVICE_BOOT_START - 0x00000000 - A device driver started by the system loader. This value is valid only for driver services.
SERVICE_SYSTEM_START - 0x00000001 - A device driver started by the IoInitSystem function. This value is valid only for driver services.
Вы, случайно, не пытаетесь установить этот тип запуска для обычной службы - программы пользовательского режима которую запускает Service Control Manager? Если так, то так делать нельзя: типы загрузки boot и system предназначены исключительно для драйверов режима ядра.
Похожие вопросы