Запуск службы из реестра

Запуск службы из реестра

После рассмотрения назначения разделов формата ControlSetNNN вы знаете, что они предназначены для хранения настроек запускаемых системой служб. Но как эти настройки хранятся в реестре? Именно этому вопросу и посвящен данный раздел.

Все настройки запуска служб хранятся в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Она содержит список разделов, каждый из которых определяет описания одной службы или сервиса. Названия данных разделов, в принципе, не имеют значения (но если для службы не существует параметра DisplayName, то для ее идентификации будет использоваться название раздела, в котором она описывается). Значение имеют те параметры, которые описаны в соответствующем разделе. К таким параметрам можно отнести приведенные ниже.

Group — параметр имеет тип REG_SZ и определяет группу, к которой относится служба. Именно от группы зависит, в какой момент будет запущена служба — сначала запускаются все службы одной группы, потом все службы другой и т.д. Саму же последовательность, в которой запускаются группы служб, можно просмотреть в REG_MULTI_SZ-параметре List, расположенном в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder.

DependOnGroup — этот параметр REG_MULTI_SZ-типа определяет группы, которые должны быть запущены перед запуском данной службы. В контексте оснастки services.msc, которая описывает все службы, установленные на компьютере, данный параметр определяет содержание вкладки Зависимости диалога Свойства для данной службы.

DependOnService — параметр REG_MULTI_SZ-типа, определяет сервисы, которые должны быть запущены перед запуском данной службы. Значения этого параметра отображаются на вкладке Зависимости диалога Свойства, вызываемого двойным щелчком левой кнопкой мыши на строке, определяющей данную службу в оснастке services.msc.

DisplayName — этот параметр строкового типа определяет строку названия службы, которая как раз и будет идентифицировать службу в оснастке services.msc (данная строка будет отображаться в поле Имя оснастки services.msc).

Description — параметр строкового типа, определяет строку описания для соответствующей службы. Строка будет отображаться в поле Описание диалога Свойства для данной службы.

ObjectName — этот параметр строкового типа определяет учетную запись, с правами которой будет запускаться служба. Если его значение равно LocalSystem, то вход будет выполняться с правами данной учетной записи (эта запись пришла на смену записи System, определяющей права системы, и содержит меньше прав, чем сама учетная запись System). Если же значение этого параметра равно NT Authority\NetworkService, то вход будет выполнен от имени сетевой службы (аналогично учетной записи LocalSystem, данная учетная запись имеет меньше прав, чем учетная запись System). Если же вам необходимо предоставить службе вход от имени учетной записи определенного пользователя данного компьютера, то параметру ObjectName в качестве значения нужно присвоить строку формата .\логин пользователя.

ErrorControl — параметр DWORD-типа, определяет поведение системы при возникновении ошибок в работе службы и может принимать такие значения:

• 0 — игнорировать ошибку;

• 1 — предупреждать пользователя об ошибке;

• 2 — перезагрузить компьютер.

ImagePath — этот параметр строкового типа определяет путь к файлу службы, который и будет запускаться системой. В оснастке services.msc параметр определяет содержимое поля Исполняемый файл диалога Свойства для соответствующей службы (это поле позволяет лишь просмотреть путь к файлу службы, но не отредактировать его).

Start — параметр DWORD-типа, определяет момент загрузки системы, в который будет запущена данная служба. Он может принимать следующие значения:

• 0 — служба будет запускаться загрузчиком операционной системы перед началом этапа инициализации ядра;

• 1 — данная служба будет запускаться при инициализации ядра (подсистемой ввода/вывода);

• 2 — служба будет запускаться диспетчером сервисов (smss.exe) при входе пользователя в систему;

• 3 — данная служба запускается вручную в тот момент, когда она понадобится какой-нибудь программе;

• 4 — служба не будет запускаться никогда.

Type — этот параметр DWORD-типа указывает на то, к какому типу относится служба, и может принимать следующие значения:

• 1 — служба определяет устройства уровня ядра;

• 2 — служба определяет драйвер файловой системы;

• 4 — служба является аргументом для адаптера;

• 8 — служба относится к службам файловой системы;

• 10 — служба является программой, запускающей свой процесс;

• 20 — служба является программой, запускающей общий процесс;

• 100 — если данная битовая маска присутствует в параметре Туре, то система будет разрешать соответствующей службе взаимодействие с Рабочим столом (иначе служба не сможет вывести диалоговое окно, окно сообщения или свое окно).

Для примера попробуем зарегистрировать в системе свою собственную службу. Для этого достаточно только создать свой раздел в ветви HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, а в этом разделе создать такие параметры, как ImagePath, DisplayName, Description, Group. Результат можно видеть на рис. 8.1.

www.e-reading.club

мЙЮОЩЕ ЪБРЙУЙ
Linux, РТПЗТБННЩ — РТПВМЕНЩ Й ТЕЫЕОЙС

уМХЦВЩ windows

оБЮОЕН У ФПЗП ЮФП ФБЛПЕ УМХЦВБ?
ьФП РТЙМПЦЕОЙС, БЧФПНБФЙЮЕУЛЙ ЪБРХУЛБЕНЩЕ УЙУФЕНПК РТЙ ЪБРХУЛЕ Windows Й ЧЩРПМОСАЭЙЕУС ЧОЕ ЪБЧЙУЙНПУФЙ ПФ УФБФХУБ РПМШЪПЧБФЕМС. йНЕЕФ ПВЭЙЕ ЮЕТФЩ У ЛПОГЕРГЙЕК ДЕНПОПЧ Ч Unix.

чПЪНПЦОП, Х чБУ ВХДХФ ДПРПМОЙФЕМШОЩЕ УМХЦВЩ. лПМЙЮЕУФЧП УЕТЧЙУПЧ ЪБЧЙУЙФ ПФ ЛПМЙЮЕУФЧБ ХУФБОПЧМЕООЩИ РТПЗТБНН. рПУНПФТЕФШ ЛБЛБС УМХВЦБ ПФ ЛБЛЙИ УМХЦВ ЪБЧЙУЙФ НПЦОП — РТБЧБС ЛОПРЛБ НЩЫЙ — УЧПКУФЧБ — ЪБЧЙУЙНПУФЙ. рТЕЦДЕ ЮЕН ПФЛМАЮБФШ УМХЦВЩ ЦЕМБФЕМШОП РПУНПФТЕФШ ПФ ЮЕЗП ПОЙ ЪБЧЙУСФ. зМБЧОПЕ ОЕ РЕТЕУФБТБФШУС — Б ФП ЪБЧЙУСЭЙЕ УМХЦВЩ НПЗХФ ПФЛБЪБФШ.(ЛБЛ РТЙНЕТ РТЙЧЕДХ ФБЛХА УМХЦВХ ЛБЛ «фЕОЕЧПЕ ЛПРЙТПЧБОЙЕ ФПНБ»/ еУМЙ ЧЩ РПМШЪХЕФЕУШ ЧПУУФБОПЧМЕОЙЕН УЙУФЕНЩ, ФП ЬФХ УМХЦВХ РПМОПУФША ПФЛМАЮБФШ ОЕ ОБДП)

хРТБЧМЕОЙЕ УМХЦВБНЙ Windows, Б ЙНЕООП ЪБРХУЛ УМХЦВЩ, ЕЕ ПФЛМАЮЕОЙЕ ЙМЙ ЙЪНЕОЕОЙЕ РБТБНЕФТПЧ ПУХЭЕУФЧМСЕФУС РХФЕН ЧЩЪПЧБ РБОЕМЙ ХРТБЧМЕОЙС УМХЦВБНЙ: рХУЛ — рБОЕМШ ХРТБЧМЕОЙС — бДНЙОЙУФТЙТПЧБОЙЕ — уМХЦВЩ. фБЛЦЕ НПЦОП ПУХЭЕУФЧМСФШ ХРТБЧМЕОЙЕ УМХЦВБНЙ ЮЕТЕЪ тЕЕУФТ Windows. ъБ ЬФП ПФЧЕЮБЕФ ЧЕФЛБ: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. фБЛЦЕ ХРТБЧМЕОЙЕ УМХЦВБНЙ НПЦОП ПУХЭЕУФЧМСФШ ЙЪ ЛПНБОДОПК УФТПЛЙ: рХУЛ — ЧЩРПМОЙФШ — services.msc.

пРЙУБОЙЕ УМХЦВ НПЦОП РПЮЙФБФШ Ч УБНПК УРТБЧЛЕ РП УМХЦВБН. чЩДЕМСЕН УМХЦВХ Й УРТБЧБ ЮЙФБЕН ЪБ ЮФП ПОБ ПФЧЕЮБЕФ. вПМЕЕ ЛПОЛТЕФОЕК НПЦОП ХЪОБФШ — ЧЩДЕМЙМЙ УМХЦВХ — РТБЧПК ЛОПРЛПК НЩЫЙ — УЧПКУФЧБ (ПФУАДБ ХЪОБЕН ЛБЛ ОБЪЩЧБЕФУС УМХЦВБ, ЛБЛПК ЕЕ ЙУРПМОСЕНЩК ЖБКМ, ФЙР ЪБРХУЛБ ОХ Й Ф.Д.). йМЙ ЕУМЙ ПУФБМЙУШ ЛБЛЙЕ-МЙВП ЧПРТПУЩ, ФП Ч ЙОФЕТОЕФЕ ФБЛЙИ УУЩМПЛ РП ЪБРТПУХ — пРФЙНЙЪБГЙС Windows ЙМЙ пФЛМАЮЕОЙЕ оЕОХЦОЩИ УМХЦВ Ч WindПws 7 — РПМОП.

пВТБЭБКФЕ ЧОЙНБОЙЕ Ч РЕТЧХА ПЮЕТЕДШ ОБ УМХЦВЩ ВЕЪ РПДРЙУЙ, ОБРТЙНЕТ РТЙ ХУФБОПЧЛЕ Photoshop CS3 Й CS4 ЧЕТУЙЙ БЧФПНБФПН ХУФБОБЧМЙЧБЕФУС Й ЪБРХУЛБЕФУС УМХЦВБ Bonjour У ОБЪЧБОЙЕН ##Id_String2.6844F930_1628_4223_B5CC_5BB94B879762##. пОБ ОЕ ЙНЕЕФ РПДРЙУЙ Й ЧППВЭЕ ОЕРПОСФОП ДМС ЮЕЗП ПОБ — РПЮЙФБФШ П ОЕК НПЦОП ъдеуш — С МЙЮОП УЮЙФБА, ЮФП ЬФБ УМХЦВБ НОЕ УПЧЕТЫЕООП ОЕ ОХЦОБ — ОХ ОЕ РПЧЕТЙМБ С, ЮФП ПОБ ФБЛБС «ВЕМБС Й РХЫЙУФБС» Й ПФЛМАЮЙМБ ЕЕ, Б РПФПН Й ЧПЧУЕ ХДБМЙМБ. дМС РПМОПЗП ХДБМЕОЙС ОЕОХЦОПК УМХЦВЩ ОХЦОП Ч ЛПНБОДОПК УФТПЛЕ ПФ БДНЙОЙУФТБФПТБ ЧЧЕУФЙ:

sc stop «ЙНС УМХЦВЩ» — ПУФБОПЧЛБ
sc delete «ЙНС УМХЦВЩ» — ХДБМЕОЙЕ

йМЙ, ОБРТЙНЕТ, Х НЕОС ВПМФБЕФУС УМХЦВБ NMIndexingService — ЬФП ЧУРПНПЗБФЕМШОЩК РТПГЕУУ Nero Scout Й РТЕДУФБЧМСЕФ УПВПК УМХЦВХ ЙОДЕЛУЙТПЧБОЙС ЖБКМПЧ, ОБ ЪБРЙУШ ДЙУЛПЧ ПО ОЙЛБЛ ОЕ УЛБЪЩЧБЕФУС, Б ОХЦОБ МЙЫШ ДМС «ХДПВОПЗП» РПЙУЛБ. нОЕ МЙЮОП ЬФПФ «ХДПВОЩК» РПЙУЛ ОЕ ОХЦЕО — РПЬФПНХ ПФЛМАЮЙМБ.
пФДЕМШОП УЛБЦХ, ЮФП ПФЛМАЮБФШ УМХЦВЩ ОХЦОП Ч РЕТЧХА ПЮЕТЕДШ ДМС ПВЕУРЕЮЕОЙС ВЕЪПРБУОПУФЙ УЙУФЕНЩ — ПФ БФБЛ ЙЪЧОЕ, ЧП ЧФПТХА — ДМС ОЕЛПФПТПК ТБЪЗТХЪЛЙ РТПГЕУУПТБ Й ПРЕТБФЙЧОПК РБНСФЙ (ИПФС ОБЧЕТОП Ч ОБЫЕ ЧТЕНС ЬФП ХЦЕ ОЕ БЛФХБМШОП). рТЙЧЕДХ ЛПОЛТЕФОЩК РТЙНЕТ, Ч windows ТБЪМЙЮОЩИ ЧЕТУЙК ЕУФШ УМХЦВЩ ДМС ХДБМЕООПЗП ДПУФХРБ Л ТБВПЮЕНХ УФПМХ. (УЮЙФБА — ДМС ДПУФХРБ Л ЛПНРШАФЕТХ. ). рП ХНПМЮБОЙА ПОЙ члмаюеощ. фЕРЕТШ УЛБЦЙФЕ, ЛБЛ ЮБУФП ЧЩ Ч РПЧУЕДОЕЧОПК ЦЙЪОЙ РПМШЪХЕФЕУШ ХДБМЕООЩН ДПУФХРПН? вПМШЫЙОУФЧП ПФЧЕФСФ «ОЙЛПЗДБ». дБООЩЕ УМХЦВЩ НПЦОП УПЧЕТЫЕООП ВЕЪВПМЕЪОЕООП ПФЛМАЮЙФШ. пУФБЧБСУШ ЧЛМАЮЕООЩНЙ ПОЙ «ПЛФТЩЧБАФ ДЧЕТШ» ДМС ЧУСЛПЗП «НХУПТБ». рПУМЕ ПФЛМАЮЕОЙС ЬФЙ ДЧЕТЙ ЪБЛТЩЧБАФУС, ОП ЬФП ОЕ ЪОБЮЙФ, ЮФП ЕУМЙ ЧЩ РППФЛМАЮБЕФЕ ФБЛЙЕ УМХЦВЩ, ФП БОФЙЧЙТХУОПК РТПЗТБННПК ЙМЙ ЖБКЕТЧПМПН РПМШЪПЧБФШУС ОЕ ОХЦОП — ВЕЪ ОЙИ ЧУЕ ТБЧОП ОЕ ПВПКФЙУШ, РПФПНХ ЮФП ЪБЛТЩФШ ЧУЕ РПТФЩ У ПФЛМАЮЕОЙЕН УМХЦВ ОЕ РПМХЮЙФУС.

рП Windows XP Й Vista ЕУФШ ЙУЮЕТРЩЧБАЭБС ЙОЖПТНБГБС ЧПФ ъдеуш. нПЦЕФ ВЩФШ ЬФБ ЙОЖПТНБГЙС Й ОЕ УПЧУЕН УЧЕЦБС, ОП ЧУЕ ФБЛЙ ПОБ РПНПЦЕФ РПУМХЦЙФШ ПФРТБЧОПК ФПЮЛПК ДМС ЙЪХЮЕОЙС УМХЦВ win7 ФБЛ ЛБЛ УМХЦВЩ win7 Й Vista ДПЧПМШОП РПИПЦЙ.

ipmnet.ru

Здравствуйте, Deus348, Вы писали:

D>Написал свой сервис, но мне надо, чтобы при установке сервиса на машину указывались его параметры запуска. Причем именно так, как они указываются посредством windows: Мой компьютер\управление\службы\нужный сервис\свойства\параметры запуска, никакой отсебятины. Если кто сталкивался = подскажите, пожалуйста!Заранее благодарен!
Кроме как добавление в строку запуска в соответствующем месте реестра других способов не нашел.
Соответствующее место реестра здесь:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName\ImagePath

Здравствуйте, Closer, Вы писали:

C>Просто в это поле (поле с названием «Параметры запуска») хочешь прописать свои параметры?
C>Каким способом ты устанавливаешь свой сервис?

Да именно так. Сервис устанавливаю установщиком который в студии добавил к проекту сервиса.

S_>Кроме как добавление в строку запуска в соответствующем месте реестра других способов не нашел.
S_>Соответствующее место реестра здесь:
S_>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName\ImagePath

Спасибо, но этот вариант не подходит, т. к. мне надо чтобы параметры появлялись в поле «Параметры запуска» и их потом пользователь мог легко изменить.

D>Здравствуйте, Slider_spb, Вы писали:

S_>>Кроме как добавление в строку запуска в соответствующем месте реестра других способов не нашел.
S_>>Соответствующее место реестра здесь:
S_>>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName\ImagePath

D>Спасибо, но этот вариант не подходит, т. к. мне надо чтобы параметры появлялись в поле «Параметры запуска» и их потом пользователь мог легко изменить.
Первое решение, которым воспользовался я — это написать небольшую программку для настройки сервиса (установки, удаления, задания нужных параметров и т.п.) которая правит реестр.
Второе — параметры, которые задаются в поле «параметры запуска сервиса», можно получать как аргументы процедуры, обрабатывающей событие OnStart. Единственно я не нашел способа задать эти параметры так, чтобы они задавались автоматически при любом варианте старта службы, а не только при старте её вручную и задании этих параметров вручную через менеджер служб виндов.

Здравствуйте, Slider_spb, Вы писали:

S_>Первое решение, которым воспользовался я — это написать небольшую программку для настройки сервиса (установки, удаления, задания нужных параметров и т.п.) которая правит реестр.

Плохая идея — информация из реестра кешируется service manager. Если не хватает возможностей ServiceInstaller — надо пользоваться соответствующим неуправляемым API. Вот пример:

Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Slider_spb, Вы писали:

S_>>Первое решение, которым воспользовался я — это написать небольшую программку для настройки сервиса (установки, удаления, задания нужных параметров и т.п.) которая правит реестр.

AVK>Плохая идея — информация из реестра кешируется service manager. Если не хватает возможностей ServiceInstaller — надо пользоваться соответствующим неуправляемым API. Вот пример:
. [погрызено мышами]
Меня не совсем правильно поняли, в принципе у меня реализована самоустановка сервиса через стандартный installer, а потом лишь в коде после установки добавляются параметры в ImagePath.
Наверно через API всё это делать наверно правильней, но уж так исторически сложилось, что сначала параметры были не нужны, потом понадобились, а переписывать уже было некогда (сроки и т.п.).
А управляющая программка работает через ServiceController, как и положено.

S_>Меня не совсем правильно поняли, в принципе у меня реализована самоустановка сервиса через стандартный installer, а потом лишь в коде после установки добавляются параметры в ImagePath.

Все равно не надо так делать, это хак.

S_>Первое решение, которым воспользовался я — это написать небольшую программку для настройки сервиса (установки, удаления, задания нужных параметров и т.п.) которая правит реестр.
S_>Второе — параметры, которые задаются в поле «параметры запуска сервиса», можно получать как аргументы процедуры, обрабатывающей событие OnStart. Единственно я не нашел способа задать эти параметры так, чтобы они задавались автоматически при любом варианте старта службы, а не только при старте её вручную и задании этих параметров вручную через менеджер служб виндов.

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

D>Написал свой сервис, но мне надо, чтобы при установке сервиса на машину указывались его параметры запуска. Причем именно так, как они указываются посредством windows: Мой компьютер\управление\службы\нужный сервис\свойства\параметры запуска, никакой отсебятины. Если кто сталкивался = подскажите, пожалуйста!Заранее благодарен!

указанные тобой параметры, насколько я помню, работают только при запуске кнопкой старт в окне где они вводятся. Для запуска сервиса с параметрами, параметры нужно передавать через командную строку — это не теже самые параметры, которые указываются в окне управления сервисом.
Для того чтобы реализовать передачу параметров через командную строку, нужно реализовывать свой класс Installer’а, и делать свою процедуру установки сервиса. Обычно процедуру установки сервиса удобно разместить в EXE’шнике с самим сервисом, чтобы он сам себя мог устанавливать — в таком варианте можно даже сделать опцию командной строки для выбора режима запуска — как консольное приложение или как сервис.
Утилитой installutil воспользоваться естественно не получится — она не расчитана на аргументы для сервиса!

rsdn.org

Порядок загрузки драйверов и сервисов в Windows

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

Прежде всего посмотрим текущий порядок запуска системы с помощью программы LoadOrder от Sysinternals. Программа покажет нам, что и в каком порядке загружается при запуске операционной системы.

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

В качестве подопытного возьмем драйвер Microsoft ACPI (Advanced Configuration and Power Interface), который отвечает за обнаружение аппаратного обеспечения и управление питанием. Задача ACPI — обеспечить взаимодействие между операционной системой и аппаратным обеспечением, поэтому драйвер ACPI загружается в самом начале.

Программа Loadorder предоставляет довольно ограниченную информацию о порядке загрузки, поэтому за более точными данными идем в реестр. У каждого драйвера и Windows-сервиса есть свой раздел в ветви реестра HKLM\SYSTEM\CurrentControlSet\Services. Названы разделы по имени драйвера\сервиса, соответственно нам нужен раздел ACPI.

За порядок загрузки драйвера отвечают три параметра реестра. Основной параметр Start — определяет тип запуска драйвера. Вот правила, по которым драйверы устанавливают значение своего параметра Start:

• Драйверы, которые должны загружаться системным загрузчиком при запуске операционной системы, указывают значение Start равное 0 (запуск при загрузке системы). Пример — драйверы системных шин и драйвер файловой системы, используемый при загрузке системы;
• Драйвер, который не требуется непосредственно для загрузки системы, указывает в Start значение, равное 1 (запуск системой). Пример — стандартный драйвер видеокарты (VgaSave);
• Драйвер, не обязательный для загрузки системы, устанавливает значение Start равным 2 (автозапуск). Пример — драйвер многосетевого UNC-npoвайдера (Multiple UNC Provider, MUP), поддерживающий UNC-имена удаленных ресурсов (типа \\Computer\Share);
• Драйверы, не обязательные для работы операционной системы (например, драйверы сетевых адаптеров), указывают значение Start равным 3 (запуск по требованию).

Также драйверы устройств могут использовать параметры Group и Tag для контроля порядка своей загрузки при запуске системы. Параметр Group драйверы\сервисы используют, чтобы указать группу, к которой они принадлежат, а порядок загрузки групп определяется параметром List, находящимся в разделе HKLM\SYSTEM\ CurrentControlSet\Control\ServiceGroupOrder\.

Кстати, параметр Group указывать не обязательно. Если драйвер\сервис не входит в какую либо группу, то он загружается в самом конце очереди.

Драйвер может еще больше детализировать порядок своей загрузки с помощью параметра Tag, который указывает конкретную позицию драйвера в группе. Диспетчер ввода-вывода сортирует драйверы в группе по значениям этого параметра, а драйверы, не имеющие параметра Tag, перемещаются в конец списка драйверов группы.

Посмотрев на порядок загрузки, можно подумать что сначала загружаются драйверы с меньшими значениями Tag, потом — с большими, но это не совсем так. Приоритет значений параметров Tag в рамках группы определяется в разделе HKLM\SYSTEM\CurrentControlSet\Control\GroupOrderList.

Для примера откроем двоичный параметр Boot Bus Extender, который соответствует одноименной группе, к которой относится и драйвер ACPI. Параметр представляет из себя набор двойных слов (по 4 байта каждое). Первое слово (выделено красным) задает общую длину переменной (количество двойных слов), в нашем примере 06. Остальные двойные слова как раз и являются тэгами. Драйверу ACPI соответствует тэг, равный 01 (выделен зеленым).

Приоритетность тега определяется не значением тега, а его положением: чем выше расположен тэг, тем выше его приоритет в группе, и тем выше приоритет драйвера, которому этот тэг соответствует. А поскольку 01 выше остальных тегов, то и драйвер ACPI загружается первым в группе.

Порядок загрузки Windows-сервисов несколько отличается от порядка загрузки драйверов. В качестве примера возьмем сервис aвтоматического обновления (wuauserv). Он не особо критичен для работы системы и поэтому грузится в последнюю очередь.

Опять идем в реестр. Параметры запуска сервиса находятся в разделе HKLM\SYSTEM\CurrentControlSet\Services\wuauserv. Я выделил два основных параметра, отвечающих за порядок загрузки данного сервиса.

Windows-сервисы запускаются диспетчером управления сервисами (Service Control Manager, SCM) в соответствии со значением параметра Start. Параметр этот для сервисов может принимать следующие значения:

• Авто запуск (2) — сервис запускается автоматически, сразу после запуска основного SCM-процесса Services.exe;
• Запуск по требованию (3) — сервис запускается при необходимости, по требованию какого либо сервиса или программы;
• Отключено (4) — сервис отключен и не запускается ни при каких условиях.

Значения 0 (запуск при загрузке системы) и 1 (запуск системой) для сервисов не могут быть указаны, только для драйверов устройств.

Кроме того, начиная с Windows Vista\Server 2008 для сервисов появился еще один режим запуска — отложенный автозапуск. Отвечает за него параметр DelayedAutoStart = 1, который который указывает SCM произвести автоматический старт данного сервиса с задержкой. SCM запускает службы, для которых выбран отложенный запуск, после загрузки сервисов, отмеченных для автозапуска.

Режимом запуска сервисов можно управлять не только из реестра, но и в графическом режиме, из консоли Службы (Services).

Так же как и драйверы, Windows-сервисы могут использовать параметр Group в своем разделе реестра, чтобы указать группу, к которой они принадлежат. Сейчас, для наглядности, возьмем наш сервис wuauserv, находящийся в самом конце списка загрузки. С помощью ключа Group поместим его в группу Event Log, перезагрузимся и посмотрим порядок загрузки в Loadorder. Как видите, порядок изменился и wuauserv поднялся с последнего места, загрузившись сразу после своего одногруппника — службы eventlog. Правда порядок размещения внутри группы изменить уже не получится, т.к. Tag для сервисов не используется.

И еще один параметр, который косвенно влияет на порядок загрузки сервисов — DependOnService. Он указывает, от каких сервисов зависит данный сервис. Соответственно сервис не загружается, пока не будут загружены сервисы, перечисленные в DependOnService.

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

Более наглядно это показано в оснастке Службы, где на вкладке Зависимости (Dependency) указаны как сервисы, от которых зависит данный сервис, так и сервисы, зависящие от него.

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

windowsnotes.ru

Службы Windows 10

От службы в операционной системе Windows можно избавиться и стандартными средствами программного обеспечения. Как удалить службу Windows 10, не прибегая к сложным манипуляциям и установке дополнительных утилит, и стоит ли это делать?

Предостережения: что нужно понимать, удаляя службу в системе Windows

Хотя службы можно деинсталлировать стандартными средствами, не всегда это безопасно. Восстановить службу после того, как она была удалена пользователем, крайне затруднительно, зачастую невозможно. При этом часть служб непосредственно связана с базовыми функциями операционной системы: без таких компонентов Windows просто перестанет загружаться. В итоге после удаления службы может потребоваться переустановка не отдельной программы или сервиса, а полное восстановление или повторная инсталляция операционной системы.

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

Зачем удалять службы Windows

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

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

Еще одна причина удалить службу — запуск процесса вредоносным программным обеспечением. Некоторые вирусы и приложения, показывающие баннерную рекламу, запускаются в виде службы Windows. Большая часть антивирусных программ не реагирует на запущенные службы, выполняя проверку только приложений. Избавляться от нежелательных служб приходится вручную.

Удаление службы

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

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

Перед выполнением дальнейших действий службу, которую планируется удалить, останавливают. Для этого нажимаем кнопку «Остановить» в окне свойств службы.

Удаление службы через командную строку

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

Для запуска консоли в режиме администратора нужно перейти в системную папку System32 (в каталоге Windows) и найти приложение cmd.exe. По правому клику мышью появится контекстное меню, где нужно выбрать пункт «Запуск от имени администратора».

Альтернативный вариант, который работает в Windows от 7 версии и старше — поиск приложения cmd через меню «Пуск». Когда система отобразит приложение, его также можно будет запустить в администраторском режиме.

В Windows есть утилита, которая предназначена для работы со службами. Называется утилита sc, и запускается в консоли такой же командой. Чтобы удалить одну из службы Windows, в командной строке выполняем команду вида: sc delete Имя Службы. Если в названии присутствуют пробелы, придется взять имя в кавычки. Команда будет выглядеть так: sc delete “Имя Службы”.

Если удаление службы было проведено корректно, в командной строке отобразиться соответствующее сообщение: [SC] DeleteService: success.

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

Удаление через редактор реестра

Можно убрать службу из системы и через редактор реестра. Для этого вызывают окно выполнения (Win+R), в его строке указывают имя программы — regedit. В результате должен открыться редактор реестра.

Далее нужно перейти с списку сервисов. В разделе HKEY_LOCAL_MACHINE\SYSTEM\ находят папку CurrentControlSet, а в ней — раздел Services. Здесь отображаются все службы, которые присутствуют в системе.

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

Чтобы случайно не убрать полезный сервис, название службы дополнительно проверяют в параметрах DisplayName и InfoPath.

Если все верно, всю ветку службы удаляют. Для этого по названию ветки кликают правой кнопкой мыши и выбирают пункт «Удалить».

windowss10.ru