Службы Windows изнутри. Установка устройств и управление драйверами Управление сервисами и драйверами windows

Введение

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

Сервисы

При старте ОС запускается менеджер служб(SCM
Manager).Считывая данные из реестра (имя
сервиса, способ загрузки, тип драйвера и т.д.),
он составляет базу данных для управления
службами. Я опишу некоторые функции, с
помощью которых можно управлять сервисами.
Сначала требуется создать связь с этой
базой данных (SCM database), затем передать
указатель баз данных некоторым функциям,
управляющими сервисами.

Как я уже сказал, первым делом нужно
создать связь с базой данных SCM. Для этого
служит функция OpenSCManager.

SC_HANDLE OpenSCManager(LPCTSTR lpMachineName, LPCTSTR
lpDatabaseName, DWORD dwDesiredAccess);

LPCTSTR lpMachineName - указатель на строку,
завершающуюся нулём, указывающую на имя
локального компьютера. Этот параметр
можно установить в NULL.

LPCTSTR lpDatabaseName- указатель на строку,
завершающуюся нулём, содержащая в себе имя
открываемой базы данных.Этот параметр
также слудует установить в NULL.

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

SC_MANAGER_ALL_ACCESS - стандартные права доступа к БД.
SC_MANAGER_CONNECT - разрешает соединяться с БД SCM.
SC_MANAGER_CREATE_SERVICE- разрешает создание новых
сервисов.

Создав связь с БД SCM,вы можете управлять
сервисами.

Функция OpenService служит для получения
описателя службы. Учтите, что эта функция не
создаёт службу, для создания службы служит
CreateService, а открывает уже созданную ранее
службу.

SC_HANDLE OpenService(SC_HANDLE hSCManager, LPCTSTR
lpServiceName, DWORD dwDesiredAccess);

SC_HANDLE hSCManager - указатель, возвращенный
функцией OpenSCManager.

LPCTSTR lpServiceName - имя открываемого сервиса.

DWORD dwDesiredAccess- права с которыми мы можем
открыть службу. Вот некоторые из них:

SERVICE_ALL_ACCESS- это стандартные права доступа.
SERVICE_START-разрешает запуск работы сервиса.
SERVICE_STOP-разрешает остановку работы сервиса.

Данная функция возвращает указатель
открываемой службы. Получив его мы можем
управлять службой в соответствии с
заданными правами.

Эта функция нужна для создания сервиса (службы).

SC_HANDLE CreateService(SC_HANDLE hSCManager, LPCTSTR
lpServiceName, LPCTSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType,
DWORD dwStartType, DWORD dwErrorControl, LPCTSTR lpBinaryPathName, LPCTSTR
lpLoadOrderGroup, LPDWORD lpdwTagId, LPCTSTR lpDependencies, LPCTSTR
lpServiceStartName, LPCTSTR lpPassword);

Первый параметр (hSCManager) указывает на
указатель, возвращенный функцией OpenSCManager.
Следующие два параметра указывают на
строки, содержащие имя создаваемой службы и
имя, которое будет использовано
пользовательским интерфейсом. Следующий
параметр содержит в себе флаги,
определяющие права доступа к службе. Здесь
используются те же флаги, что и в функции
OpenService. В большинстве случаев понадобится
установка этого флага в SERVICE_ALL_ACCESS. Параметр
dwServiceType определяет тип создаваемого
сервиса. В данном случае нужно установить
его в SERVICE_KERNEL_DRIVER, что в свою очередь
означает, что сервис будет управлять
драйвером уровня ядра. Другие же значения
означают, что это будет драйвер файловой
системы и т.д. Параметр dwStartType очень важен, т.к
определяет способ старта службы. В нашем
случае его следует установить в
SERVICE_BOOT_START или SERVICE_AUTO_START, что означает
практически одно и тоже - запуск службы во
время запуска самой операционной системы.
Параметр dwErrorControl указывает на способ
обработки возникающих ошибок, в нашем
случае его следует установить в SERVICE_ERROR_NORMAL.
Следующий параметр - lpBinaryPathName - указатель на
завершающуюся нулём строку, указывающую на
полный путь к драйверу (в нашем случае
руткиту), которым будет управлять служба.
Следующие пать параметров следует
установить в NULL, т.к. они не важны в данном
случае.

Для запуска службы существует функция
StartService.

BOOL StartService(SC_HANDLE hService, DWORD
dwNumServiceArgs, LPCTSTR *lpServiceArgVectors);

SC_HANDLE hService - указатель службы, возвращённый
функцией CreateService или OpenService. Параметр
dwNumServiceArgs содержит в себе число параметров,
указанных в масиве lpServiceArgVectors. В этом
массиве указываются параметры, которые
будут переданы службе. Учтите, что сервисы
драйверов не используют этот параметр,
поэтому два последних параметра в нашем
случае нужно установить в NULL. Если функция
выполнилась успешно, то она возвращает
ненулевое значение. Функции для остановки
службы нет, но ее можно легко написать с
использованием функции ControlService:

BOOL ControlService(SC_HANDLE hService, DWORD dwControl,
LPSERVICE_STATUS lpServiceStatus);

Параметр dwControl содержит флаги, с помощью
которых вы задаёте, что нужно сделать со
службой. Если вам нужно остановить работу
службы, то можете установить её в
SERVICE_CONTROL_STOP. С помощью этой функции можно и
более удобно останавливать и запускать
службу. Например для паузы работы сервиса,
установите параметр dwControl в SERVICE_CONTROL_PAUSE, а
для продолжения работы в SERVICE_CONTROL_CONTINUE.
Параметр lpServiceStatus - указатель на структуру
SERVICE_STATUS, куда заносится текущий статус
службы. Установите его в NULL, если вам не
важен текущий статус работы службы. Эта
функция возвращает ненулевое значение при
успешном выполнении.

Я перечислил все необходимые функции для
загрузки руткитов (драйверов).Для закрытия
структуры DT SCM используйте функцию
CloseServiceHandle. Она принимает единственный
параметр - DT SCM, т.е. описание, возвращённое
функцией OpenSCManager.

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

#define rootkitname "myrootkit" //
задаём имя нашего руткита

BOOL StopRootkit(SC_HANDLE hService) //
Объявляем
функции остановки и старта работы службы

BOOL StartRootkit(SC_HANDLE hService)//
int main()
{
SC_HANDLE hManager,hService; //
описатели
SCM базы и службы

LPVTSTR rootkpath="C:\myrootkit.sys"; //

полный путь к нашему руткиту

hManager=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS); //
создаём
связь с БД SCM

if (hManager) // если всё в порядке
{

hService=CreateService(hManager, rootkitname,rootkitname,SERVICE_ALL_ACCESS,
SERVICE_KERNEL_DRIVER, SERVICE_BOOT_START,SERVICE_ERROR_NORMAL, \rootkpath,
NULL,NULL,NULL, NULL,NULL,NULL); // создаём
службу, управляющую нашим руткитом

if (hService) // всё в порядке?
{
StartService(hService,NULL,NULL); //
запускаем
созданную службу, тем самым запуская наш
руткит

}

if (StopRootkit(hService)) // если
остановка прошла успешно,

{
StartRootkit(hService);//
то заново
запускаем её

};
CloseServiceHandle(hManager); //
закрываем
DT SCM (БД SCM).

}
BOOL StopRootkit(SC_HANDLE hService)
{
BOOL ok=true;
if (hService)
{
ok=ControlService(hService,SERVICE_CONROL_STOP,NULL); //
вызываем
функцию ControlService с флагом SERVCE_CONTROL_STOP, тем

if (!ok) // самым останавливая
работу сервиса

{
ok=false;
};
};
return ok;
}

BOOL StartRootkit(SC_HANDLE hService)
{
BOOL ok=true;
if (hService)
{
ok=ControlService(hService,SERVICE_CONTROL_START,NULL); // вызываем
функцию ControlService с флагом SERVCE_CONTROL_START, тем

if (!ok) //с амым запуская службу
{
ok=false;
};
};
return ok;
}

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

Советую вам прочитать в книге Свена
Шрайбера ("Недокументированные
возможности Windows 2000") раздел, посвящённый
программированию драйверов. Также
рекомендую цикл статей от Four-F, посвященный
созданию драйверов в Windows NT. Посмотрите
статью от Ms-Rem,"Перехват API функций в Windows NT
(часть 3).Нулевое кольцо". И не проходите
мимо rootkit.com .

Порядок загрузки драйверов и сервисов в 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-имена удаленных ресурсов (типа );
Драйверы, не обязательные для работы операционной системы (например, драйверы сетевых адаптеров), указывают значение 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 и как этот порядок можно изменить. Но прежде чем бросаться править реестр помните, что порядок загрузки драйверов и сервисов определяется автоматически, и не стоит вносить в него изменения без веской причины. Всего один неправильно выставленный параметр может привести к полной неработоспособности системы, и не факт что ее удасться восстановить. Поэтому, прежде чем приступить к редактированию реестра, обязательно сделайте его резервную копию, а также желательно иметь под рукой загрузочный носитель.

В предыдущей части этого цикла мы рассмотрели два подхода ("let Windows decide" и "let me decide"), которые можно использовать для управления внештатными драйверами при выполнении установки Lite Touch с помощью MDT 2010. В этой части мы завершим разговор о проблеме управления драйверами, здесь будут даны некоторые советы, хитрости и одна история. Первая история предоставлена мне одним из читателей, Тимом Лорсом (Tim Lors) и она является отличным наглядным примером тех проблем, с которыми вы можете столкнуться при попытках управления драйверами во время установки:

"Более года назад я написал программный сценарий, который устанавливает все драйверы на ПК WinXP. Проблема, с которой я столкнулся при выборе драйверов, не была связана с ОС. Это была неспособность производителя должным образом реализовать PnP между inf файлами их драйверов и самим аппаратным оборудованием. Если говорить точнее, inf файл указывал на то, что он является лучшим драйвером для определенного аппаратного устройства, когда, на самом деле, он не работает с таким устройством. Единственным способом подбора подходящего драйвера в такой непростой ситуации оказалось сравнение идентификационных номеров PnP аппаратного оборудования со списком известных проблемных драйверов, и если я находил совпадения, я вручную выбирал подходящий драйвер на основе дополнительных критериев " обычно номер модели ПК. Самым распространенным дополнительным критерием, необходимым для "let me decide" выбора, был номер модели ПК, но иногда включал версию BIOS и PnP subset ID, а в некоторых редких случаях это был способ проб и ошибок. Конечно, способ проб и ошибок довольно сложный, поскольку, когда Windows устанавливала тот драйвер, который считала самым подходящим, приходилось изолировать нерабочий драйвер от Windows, или система просто переустанавливала его. Обратите внимание, что такая ситуация возникала в среде, содержащей почти 10 000 ПК более чем 25 различных моделей".

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

Поиск драйверов

Первой трудностью является поиск внештатных драйверов, которые могут потребоваться вашим системам. Некоторые производители облегчают эту задачу, другие – нет, и компания Dell является представителем первой группы, поскольку предоставляет драйверы для каждой настольной системы в виде.cab файла под каждую операционную систему. Для загрузки этих.cab файлов перейдите на сайт http://www.delltechcenter.com/ и в прокручивающемся меню слева выберите Home, Microsoft, Microsoft System Center, SCCM " System Center Configuration Manager, Dell Business Client Operating System Deployment, Dell Business Client Operating System Deployment " The .CAB Files и вы увидите страницу, показанную на рисунке 1:

Рисунок 1: Загрузка драйверов для клиентских систем Dell в виде.cab файлов

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

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

Извлечение INF файлов из EXE

Иногда производители систем поставляют драйверы устройств в форме.exe файлов, а не.cab файлов. В этом случае, отличным набором инструментов является WinRAR , который позволяет вам извлекать файлы драйверов из.exe файла в папку. Помните, для того чтобы импортировать драйвер, MDT требуется.inf файл и соответствующие файлы драйвера " невозможно импортировать.exe файл, как драйвер.

Предотвращение включения драйверов

Чтобы не позволить включение импортированного вами драйвера (например, если ваши проверки показали, что драйвер после установки вызывает проблемы), просто откройте свойства драйвера и очистите поле Enable This Driver (рисунок 2):

Рисунок 2: Можно запрещать или разрешать включение драйвера

Обратите внимание, что вышеуказанный драйвер был предназначен для 32- и 64-битной версии Windows. Если вы обнаружили, что он не работает под 64-bit Windows, вы можете оставить драйвер включенным, но убрать флажок с x64, что не позволит включить его во время установки 64-bit Windows.

При желании вы даже можете отключать все драйверы в папке путем отключения папки (рисунок 3):

Рисунок 3: Можно отключать пользовательскую папку в установочном ресурсе

Управление загрузочными драйверами с помощью профилей выбора

Также можно использовать профили выбора для управления драйверами во время стадии загрузки Windows PE в установке LTI. Для этого откройте свойства вашего установочного ресурса и выберите закладку Windows PE x64 Components или Windows PE x86 Components для управления драйверами архитектуры той ОС, которую вы устанавливаете (рисунок 4):

По умолчанию выбран All Drivers And Packages профиль выбора, но только сетевые драйверы и драйверы устройств хранения из этого профиля выбора включены в образ загрузки Windows PE. При необходимости можно создавать собственный профиль выбора, который будет включать специфичные для аппаратных средств WinPE драйверы для ваших целевых систем.

Использование нескольких групп драйверов для установки по марке и модели

В предыдущей части мы посмотрели, как определять одну группу драйверов под названием DriverGroup001 и использовать ее для управления драйверами во время установки на основе марки и модели целевых компьютеров. Кит Гарнер (Keith Garner), специалист по развертыванию систем в Xtreme Consulting Group, выложил отличный пост , который дает дополнительную информацию по этой теме, и показывает вам, как можно организовать драйверы более эффективно, а затем использовать несколько групп драйверов для управления тем, как они включаются во время установки.

Еще одним полезным постом является этот пост об использовании псевдонимов моделей , написанный Майклом Мерголо, старшим консультантом в Microsoft Consulting Services.

Добавление драйверов в образ

Можно использовать DISM.exe команду для добавления драйверов в автономные образы, просто смонтируйте образ и используйте команду DISM с /add-driver опцией (смотрите для дополнительной информации об использовании DISM.exe).

Для добавления драйверов в хранилище драйверов (то есть, предварительное представление драйверов, чтобы они были доступны, когда Windows определяет устройства, нуждающиеся в драйверах), можно использовать PnPutil.exe команду. Эта команда может быть полезной, если вы, например, использовали Microsoft Update Catalog для загрузки.cab файла драйверов для принтера и хотите предварительно представить эти драйверы на своем эталонном компьютере, чтобы во время установки эти драйверы были доступны. Дополнительную информацию об этой команде можно найти и .

Обслуживание конфигурации драйверов во время создания образа Windows

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

Устройства и драйверы для них делятся на две категории: с поддержкой PnP и без. Для большинства PnP-устройств драйвер есть на CD с Windows Server 2003. При установке нового устройства система автоматически находит для него драйвер и выделяет для него ресурсы (запросы на прерывание IRQ и каналы прямого доступа к памяти DNA). В случае если системе не удается найти подходящий драйве, она запросит его у пользователя, а устройство в консоли Диспетчер задач будет помечено восклицательным знаком в желтом треугольнике. Если системе вообще не удается определить тип устройства, тогда запрос на драйвер не выдается, а устройство помечается знаком вопроса в желтом треугольнике как неизвестное.

Для обновления конфигурации устройств служит оснастка Диспетчер устройств. Ее можно использовать в двух видах: с деревом устройств, с деревом ресурсов для устройств (настраивать ресурсы вручную не рекомендуется). Оснастку Диспетчер устройств для редактирования конфигурации можно использовать только на локальном компьютере, на удаленном компьютере она работает в режиме только для чтения. Для получения подробной сводки об устройствах и драйверах, можно использовать утилиту командной строки DriverQuery.

Администраторы компьютера могут устанавливать любые устройства и драйверы. Обычные пользователи могут устанавливать драйвера в следующих случаях: драйвер имеет цифровую подпись, файлы драйвера уже есть на компьютере и для дальнейшей установки не требуется дополнительного вмешательства пользователя, причем необходимо соблюдение всех трех условий одновременно (эти условия, как правило, справедливы для принтеров, USB-устройств и для шины IEE1394).

Начиная с Windows 2000 драйвера для устройств имеют цифровую подпись, которая показывает, что файл не был изменен в процессе использования. Некоторые драйвера могут не иметь цифровой подписи. В случае если драйвер не подписан, можно настроить три варианта действия системы: Пропускать (устанавливать драйвер, даже если нет подписи. Доступен только для администратора), Предупреждать (спрашивать у пользователя устанавливать ли драйвер), Блокировать (не устанавливает драйвера без цифровой подписи).

В оснастке Диспетчер устройств можно обновлять драйвера для выбранного устройства (например, если производитель выпустил новую версию). В случае если после установки нового драйвера в работе устройства возникли проблемы, то можно вернуться к предыдущей версии драйвера, нажав на кнопку Откатить. Также драйвера для устройств можно удалять (если это PnP-устройство, удаление драйвера повлечет удаление самого устройства, если драйвер устройства был добавлен вручную, оно останется в системе, но без сконфигурованного драйвера. В случае если у устройства есть дополнительные свойства, с помощью которых можно осуществлять его настройку, доступ к ним будет осуществляться с такими же правами, что и к Диспетчеру задач. Ограничить доступ к таким настройкам также можно с помощью групповой политики.

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

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

Полное описание служб, а также название и отображаемое имя можно посмотреть и изменить состояние по этому пути: Пуск - Панель управления - Администрирование - Службы.

Но не все службы необходимы для нормальной работы компьютера. Ниже приводиться список служб, которые отключены или включены в моей конфигурации. Пользователь один (с правами администратора), к сети не подключен . Для выхода в Интернет я использую сотовый телефон в качестве модемного соединения.

AST Service (Nalpeiron Licensing Service) - Отключена .

BranchCache (Эта служба кэширует сетевое содержимое, полученное от кэширующих узлов локальной подсети) - Вручную .

DHCP-клиент (Регистрирует и обновляет IP-адреса и DNS-записи для этого компьютера) - Авто

DNS-клиент (Служба DNS-клиента (dnscache) кэширует имена DNS (Domain Name System) и регистрирует полное имя данного компьютера.) - Отключено . При наличии сети - Авто

KtmRm для координатора распределенных транзакций (Координирует транзакции между MS DTC и диспетчером транзакций ядра (KTM).) - Вручную .

Microsoft .NET Framework NGEN v2.0.50727_X86 (Microsoft .NET Framework NGEN) - Вручную.

Parental Controls (Эта служба является заглушкой для функциональных возможностей службы родительского контроля Windows, которая существовала в ОС Vista.) - Вручную .

Plug-and-Play (Позволяет компьютеру распознавать изменения в установленном оборудовании и подстраиваться под них, либо не требуя вмешательства пользователя, либо сводя его к минимуму) - Авто

Quality Windows Audio Video Experience (Quality Windows Audio Video Experience (qWave) - сетевая платформа для потоковой передачи аудио и видео в домашних сетях на основе IP-протокола) - Вручную .

Remote Desktop Configuration (Remote Desktop Configuration) - Вручную .

Superfetch (Поддерживает и улучшает производительность системы.) - Авто

Windows Audio (Управление средствами работы со звуком для программ Windows.) - Авто .

Windows CardSpace (Это обеспечивает надежную возможность создания, управления и раскрытия цифровых удостоверений.) - Вручную

Windows Driver Foundation - User-mode Driver Framework (Управление хост-процессами драйверов пользовательского режима.) - Вручную .

Windows Search (Индексирование контента, кэширование свойств и результатов поиска для файлов, электронной почты и другого контента.) - Авто . Если не пользуетесь поиском на компьютере, то можно и Отключить .

WMI Performance Adapter (Provides performance library information from Windows Management Instrumentation (WMI) providers to clients on the network.) - Вручную .

Автонастройка WWAN (Эта служба управляет мобильными широкополосными (GSM и CDMA) карточками данных и встроенными модульными адаптерами, а также подключениями и автоматической настройкой сетей.) - Вручную .

Автономные файлы (Служба автономных файлов выполняет работу по обслуживанию кэша автономных файлов,) - Вручную .

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

Агент политики IPsec (Безопасность протокола IP (IPsec) поддерживает проверку подлинности кэширующих узлов на сетевом уровне) - Вручную .

Адаптивная регулировка яркости (Предназначена для наблюдения за датчиком внешнего освещения и корректировки яркости монитора в соответствии с изменениями освещенности.) - Вручную .

Архивация Windows (Поддержка архивации и восстановления в Windows.) - Вручную .

Биометрическая служба Windows (Биометрическая служба Windows предназначена для сбора, сравнения, обработки и хранения биометрических данных в клиентских приложениях без получения непосредственного доступа к биометрическим образцам или оборудованию) - Вручную .

Брандмауэр Windows (Брандмауэр Windows помогает предотвратить несанкционированный доступ к вашему компьютеру через Интернет или сеть.) - Отключено . Используется Брандмауэр от стороннего производителя.

Веб-клиент (Позволяет Windows-программам создавать, получать доступ и изменять файлы, хранящиеся в Интернете) - Вручную .

Виртуальный диск (Предоставление служб управления дисками, томами, файловыми системами и массивами запоминающих устройств.) - Вручную .

Вспомогательная служба IP (Provides tunnel connectivity using IPv6 transition technologies) - Вручную .

Вторичный вход в систему (Позволяет запускать процессы от имени другого пользователя) - Вручную .

Группировка сетевых участников (Включает многосторонние взаимодействия с помощью группировки одноранговой сети.) - Вручную .

Дефрагментация диска (Предоставляет возможность дефрагментации дисков.) - Вручную . Можно оставить и Авто , задав расписание для запуска.

Диспетчер автоматических подключений удаленного доступа (Создает подключение к удаленной сети, когда программа обращается к удаленному DNS- или NetBIOS-имени или адресу.) - Вручную .

Диспетчер печати (Загрузка файлов в память, чтобы напечатать позже) - Авто . Если нет принтера, то Отключено .

Диспетчер подключений удаленного доступа (Управляет подключениями удаленного доступа и виртуальной частной сети (VPN) с данного компьютера к Интернету или другим удаленным сетям.) - Вручную .

Диспетчер сеансов диспетчера окон рабочего стола (Обеспечивает запуск и обслуживание диспетчера окон рабочего стола) - Авто .

Диспетчер удостоверения сетевых участников (Предоставляет службы идентификации для протокола однорангового разрешения имен (PNRP) и группировки одноранговой сети) - Вручную .

Диспетчер учетных данных (Обеспечивает защищенное хранение и извлечение учетных данных пользователей,) - Вручную .

Диспетчер учетных записей безопасности (Запуск этой службы служит для других служб сигналом о том, что диспетчер учетных записей безопасности (SAM) готов к приему запросов.) - Авто .

Доступ к HID-устройствам (Обеспечивает универсальный доступ к HID-устройствам) - Вручную .

Журнал событий Windows (Эта служба управляет событиями и журналами событий) - Авто .

Журналы и оповещения производительности (Служба журналов производительности и оповещений собирает данные с локальных и удаленных компьютеров соответственно заданным параметрам расписания, а затем записывает данные в журнал или выдает оповещение.) - Вручную .

Защита программного обеспечения (Разрешает загрузку, установку и принудительное применение цифровых лицензий для Windows и приложений Windows) - Авто .

Защитник Windows (Защита от шпионских и потенциально опасных программ) - Авто . Но все же рекомендуется использовать продукты от сторонних производителей для защиты своего компьютера от вирусов.

Изоляция ключей CNG (Служба изоляции ключей CNG размещается в процессе LSA) - Вручную .

Инструментарий управления Windows (Предоставляет общий интерфейс и объектную модель для доступа к информации об управлении операционной системой, устройствами, приложениями и службами.) - Авто .

Информация о совместимости приложений (Обработка запросов на проверку совместимости для приложений по мере их запуска) - Вручную .

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

Клиент отслеживания изменившихся связей (Поддерживает связи NTFS-файлов, перемещаемых в пределах компьютера или между компьютерами в сети.) - Авто .

Координатор распределенных транзакций (Координация транзакций, охватывающих несколько диспетчеров ресурсов, таких как базы данных, очереди сообщений и файловые системы.) - Вручную .

Кэш шрифтов Windows Presentation Foundation (Оптимизирует производительность приложений Windows Presentation Foundation (WPF) путем кэширования обычно используемых данных шрифтов.) - Вручную .

Ловушка SNMP (Принимает сообщения перехвата, созданные локальными или удаленными агентами SNMP и пересылает их программам управления SNMP, запущенными на этом компьютере.) - Вручную .

Локатор удаленного вызова процедур (RPC) (В Windows 2003 и более ранних версиях Windows служба "Локатор удаленного вызова процедур (RPC)" управляла базой данных службы имен RPC.) - Вручную .

Маршрутизация и удаленный доступ (Предлагает услуги маршрутизации организациям в локальной и глобальной сетя) - Отключена .

Модули ключей IPsec для обмена ключами в Интернете и протокола IP с проверкой подлинности (Служба IKEEXT содержит модули для работы с ключами в Интернете (IKE) и по протоколу IP с проверкой подлинности (AuthIP).) - Авто .

Модуль запуска процессов DCOM-сервера (Служба DCOMLAUNCH запускает серверы COM и DCOM в ответ на запросы активации объектов) - Авто .

Модуль поддержки NetBIOS через TCP/IP (Осуществляет поддержку NetBIOS через службу TCP/IP (NetBT) и разрешение имен NetBIOS для клиентов в сети) - Вручную .

Немедленные подключения Windows - регистратор настройки (Служба WCNCSVC содержит конфигурацию Windows Connect Now (реализация протокола WPS от Майкрософт)) - Вручную

Обнаружение SSDP (Обнаруживает сетевые устройства и службы, использующие протокол обнаружения SSDP, такие как устройства UPnP) - Вручную .

Обнаружение интерактивных служб (Включает уведомление пользователя о необходимости пользовательского ввода для интерактивных служб, которое предоставляет доступ к диалоговым окнам, созданным интерактивными службами, по мере их появления.) - Вручную

Обозреватель компьютеров (Обслуживает список компьютеров в сети и выдает его программам по запросу) - Вручную .

Общий доступ к подключению к Интернету (ICS) (Предоставляет службы трансляции сетевых адресов, адресации, разрешения имен и службы предотвращения вторжения для домашней сети или сети небольшого офиса.) - Отключена .

Определение оборудования оболочки (Предоставляет уведомления для событий автозапуска на различных устройствах.) - Авто .

Основные службы доверенного платформенного модуля (Разрешает доступ к доверенному платформенному модулю (TPM), который предоставляет услуги криптографии на основе оборудования компонентам системы и приложениям.) - Вручную