Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Секреты Windows: статьи о реестре, rundll32.exe, программах Windows Vista: Службы и драйверы


Другие наши рассылки:
  • Новости IT-мира: Ежедневно ссылки на новые новости и статьи популярных компьютерных сайтов.
  • Рецензии на новые книги: Описание новых книг о компьютерах, дизайне, бухгалтерии, психологии и др. направлениях мысли человечества.
  • Новости нашего сайта: Ежедневно ссылки на новое на нашем сайте: от ссылок на статьи до ссылок на новые/обновленные записи баз данных.

Данная статья была написана для журнала Мой компьютер.

Мы продолжаем цикл статей о работе с операционной системой Windows Vista. На этот раз мы рассмотрим различные аспекты работы со стандартными службами этой операционной системы. Не пугайтесь — данная тема будет последней из серии, посвященной работе с системными компонентами Windows Vista. После ее изучения мы перейдем к следующей серии цикла, посвященной настройке и работе с различнами возможностями данной операционной системы. Однако чтобы понять все, что будет представлено в последующих статьях, нужно знать хотя бы основы работы со службами. А значит, пора переходить к теме данной статьи.

Основные сведения о службах

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

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

Программа управления службой (SCP) предназначена для запуска, остановки, настройки службы, а также для взаимодействия с SCM (например, такими программами являются консоль services.msc или программа sc.exe операционной системы Windows Vista). Несмотря на то, что каждая программа может поставляться со своей собственной SCP, чаще всего службы используют SCP операционной системы Windows.

Диспетчер управления службами (SCM) представляет собой файл services.exe, который запускается процессом Winlogon.exe до запуска графического интерфейса. Он выполняет следующие функции.

Хранение сведений Хранит и предоставляет доступ к сведениям обо всех зарегистрированных в операционной системе службах. Сведения хранятся в ветви HKLM\SYSTEM\CurrentControlSet\Services.

Координирование SCP Исполняет роль координатора SCP, и взаимодействует с ним при помощи именованного канала \Pipe\Ntsvcs.

Запуск служб Управляет запуском всех служб. Для этого при запуске службы создается управляющий канал \Pipe\Net\NtControlPipeX, к которому, для завершения процесса запуска службы, должна подключиться запускаемая служба. Если она этого не сделает в течение определенного интервала времени (по умолчанию 30 секунд), SCM отменит запуск этой службы.

Интервал ожидания подключения службы к каналу \Pipe\Net\NtControlPipeX определяется параметром REG_DWORD типа ServicesPipeTimeout. Данный параметр расположен в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control.

Завершение служб Управляет завершением всех служб при завершении работы Windows. Для этого процесс csrss.exe оповещает о завершении работы Windows диспетчер SCM. Диспетчер управления службами, в свою очередь, оповещает все запущенные службы о необходимости завершить свою работу.

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

Время, в течение которого процесс csrss.exe ожидает завершения работы служб, определяется значением параметра строкового типа WaitToKillServiceTimeout (в миллисекундах, по умолчанию 20000). Данный параметр расположен в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control.

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

Хранение сведений о службе

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

Основные параметры службы Главными из этих настроек являются параметры, определящие название службы, ее исполняемый файл и тип запуска. Они представлены ниже.

DisplayName Параметр строкового типа, содержащий «человеческое» название службы.

Description Параметр строкового типа, содержащий описание службы.

ImagePath Параметр строкового типа, определяющий путь к исполняемому файлу службы.

Существует два типа реализации службы — либо как отдельный запускаемый файл, либо как часть одного из стандартных общих процессов операционной системы. Например, процесса svchost.exe, вторым названием которого является «универсальный процесс».

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

Подобие иерархии служб остается и в процессе svchost.exe. Если вы посмотрите список задач, выполняемых в операционной системе (рисунок. 1), тогда, скорее всего, увидите сразу несколько запущенных процессов svchost.exe. Каждый такой процесс содержит в себе службы определенного типа. Во-первых, это позволяет в какой-то степени повысить отказоустойчивость операционной системы. А во-вторых, это позволяет более точно ограничить права служб, работающих в общем процессе svchost.exe (заметьте, что различные экземпляры процесса svchost.exe запущены от имени разных учетных записей пользователей).

Но как же операционная система узнает тип службы, которая работает в общем процессе? Именно при помощи значения параметра ImagePath. Для служб, работающих в общем процессе svchost.exe, значение этого параметра имеет вид svchost.exe -k «тип службы».

Рисунок 1

Type Параметр типа REG_DWORD, определяющий тип службы. Он может принимать следующие значения: 0х10 (служба запускает собственный процесс), 0х20 (служба работает в общем процессе), 0х100 (служба поддерживает взаимодействие с рабочим столом пользователя; данное значение добавляется к одному из предыдущих значений).

Start Параметр типа REG_DWORD, определяющий способ запуска службы. Он может принимать следующие значения: 2 (автоматически с помощью SCM), 3 (вручную), 4 (не запускать).

DelayedAutoStart Параметр типа REG_DWORD. Если значение данного параметра равно 1, а значение параметра Start равно 2, тогда служба будет запускаться автоматически, но с использованием задержки запуска. То есть, служба будет запущена только после того, как будут запущены все службы со значением параметра Start, равным 2, но без параметра DelayedAutoStart. При этом при запуске такой службы будет использоваться наинизший приоритет потока (а после запуска приоритет потока будет восстановлен до нормального).

Дополнительные параметры службы Помимо основных параметров в ветви реестра HKLM\SYSTEM\CurrentControlSet\Services\«служба» могут присутствовать и другие стандартные параметры. Мы с вами рассмотрим лишь наиболее интересные из них (с точки зрения работы служб).

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

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

Group Параметр строкового типа, определяющий группу, к которой относится данная служба.

DependOnGroup Параметр типа REG_MULTI_SZ, определяющий группы, которые должны быть обязательно запущены перед запуском данной службы.

DependOnService Параметр типа REG_MULTI_SZ, определяющий службы, которые должны быть обязательно запущены перед запуском данной службы.

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

  • Учетная запись локальной системы. Данная учетная запись принадлежит к администраторам компьютера. Настройки учетной записи локальной системы хранятся в ветви реестра HKEY_USERS\.DEFAULT, а ее профиль — в каталоге %systemdrive%\Users\Default.
  • Учетная запись сетевой службы. Данная учетная запись аналогична учетной записи обычного пользователя и имеет право взаимодействия с сетью. Настройки учетной записи сетевой службы хранятся в ветви реестра HKEY_USERS\S-1-5-20, а ее профиль — в каталоге %systemroot%\ServiceProfiles\NetworkService.
  • Учетная запись локальной службы. Данная учетная запись аналогична учетной записи обычного пользователя и не имеет права взаимодействия с сетью (может работать с сетью только при помощи нулевых сеансов). Настройки учетной записи локальной службы хранятся в ветви реестра HKEY_USERS\S-1-5-19, а ее профиль — в каталоге %systemroot%\ServiceProfiles\LocalService.

Если в предыдущих операционных системах семейства Windows эти учетные записи (в особенности учетная запись локальной системы), обладали всеми правами, независимо от того, нужны они им или нет, то в операционной системе Windows Vista права учетных записей служб были ограничены. В связи с этим появился новый стандартный параметр реестра, который позволяет определить дополнительные права работы служб — RequiredPrivileges.

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

ObjectName Параметр строкового типа, определяющий учетную запись пользователя, от имени которого будет запускаться служба.

Он может принимать следующие значения: LocalSystem (локальная система), NT Authority\NetworkService (сетевая служба), NT AUTHORITY\LocalService (локальная служба), .\«логин пользователя» (от имени данного пользователя).

RequiredPrivileges Параметр типа REG_MULTI_SZ, определяющий дополнительные привилегии, предоставляемые службе.

ServiceSidType Параметр типа REG_DWORD, определяющий тип используемого службой SID. Он может принимать следующие значения: 1 (неограниченный SID), 3 (ограниченный SID).

По умолчанию службы не имеют права взаимодействия с рабочим столом пользователя. То есть, они не могут отображать свои окна и диалоги (кроме диалогового сообщения со специальными параметрами). Однако существует возможность предоставления такого права службам, работающим с правами локальной системы. Как было сказано при описании основных параметров службы, для этого достаточно добавить значение 0x100 к значению параметра Type.

Службы, имеющие право взаимодействия с рабочим столом пользователя, называются интерактивными. Вы можете запретить доступ к рабочему столу пользователя для интерактивных служб. Для этого достаточно параметру DWORD-типа NoInteractiveServices присвоить значение 1. Данный параметр находится в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Windows.

Хранение сведений о драйвере

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

Сведения о драйверах хранятся в подразделах той же ветви реестра, что и сведения о службах. То есть, ветви реестра HKLM\SYSTEM\CurrentControlSet\Services. Более того, большинство стандартных параметров, описывающих работу драйверов, аналогичны параметрам, описывающим работу служб. Например, это такие параметры, как DisplayName, Description, ImagePath, Group, DependOnGroup, DependOnService.

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

  • Type. Определят тип драйвера и может принимать следующие значения: 1 (устройство уровня ядра), 0х2 (драйвер файловой системы уровня ядра), 0х4 (аргумент для адаптера (устаревшее значение)), 0х8 (распознавание файловой системы)
  • Start. Определяет способ запуска драйвера и может принимать следующие значения: 0 (запускается перед началом инициализации ядра), 1 (запускается при инициализации ядра), 2 (запускается автоматически), 3 (вручную), 4 (запуск отключен).
  • Tag. Определяет позицию драйвера в группе, указанной параметром Group.
Программы для работы со службами

Для управления работой служб операционная система Windows Vista поддерживает сразу несколько стандартных программ. Наиболее известной из них является консоль services.msc (оснастка Службы), которая позволяет управлять работой служб в графическом режиме (рисунок 2).

Рисунок 2

Основные возможности консоли services.msc:

  • Работа со службами как локального, так и удаленного компьютера (для подключения к другому компьютеру достаточно воспользоваться командой Подключиться к другому компьютеру меню Действие).
  • Остановка, запуск, приостановка работы определенной службы.
  • Просмотр значений всех стандартных параметров службы, кроме Group, RequiredPrivileges, ServiceSidType, Security.
  • Изменение значений стандартных параметров Start, ObjectName, FailureActions, RebootMessage, FailureCommand, FailureActionsOnNonCrashFailures.
  • Просмотр списка служб, которые зависят от работы данной службы (вкладка Зависимости диалога Свойства соответствующей службы). Эта возможность основана на WMI.

Программа net.exe Кроме консоли services.msc для управления службами можно воспользоваться командами программы командной строки net.exe. В качестве имени службы можно указывать либо название подраздела реестра, в котором находятся настройки службы, либо значение соответствующего службе параметра DisplayName.

  • Net continue «имя службы». Запустить приостановленную службу
  • Net pause «имя службы». Приостановить работающую службу
  • Net start «имя службы». Запустить остановленную службу
  • Net stop «имя службы». Остановить работающую службу

Программа Sc.exe Самая главная программа, предназначенная для работы со службами. Эта программа обладает наибольшими возможностями. С ее помощью можно управлять службами как локального, так и удаленного компьютера…

Вы смотрите сериалы? Если да, то вы должны знать, что все серии сериалов заканчиваются на самом интересном месте. Думаю, вы уже догадались, что на этом месте заканчивается и очередная серия данного сериала о возможностях операционной системы Windows Vista. Чтобы добиться еще большего реализма в сравнении с сериалами, нужно обязательно добавить следующее: «продолжение следует».

Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=135

В избранное