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

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


Полезные ссылки

"Журнал Эффективная работа на компьютере"- компьютер для начинающих.
Бесплатный Журнал Эффективная работа на компьютере. Научитесь грамотно работать с полезными и нужными утилитами, узнайте что-то новое для себя из авторских статей. Ни на одном форуме вам не расскажут, того что могу дать вам я. Ведь видеоматериал усваивается человеком в несколько раз лучше, чем обычный печатный текст. В статьях и уроках используется мой личный опыт, а не пустая переписка текстов с сайтов, которая возможно даже не работает! Прежде чем что-то сообщить, я проверяю действие тех или иных программ и методов, выявляю их эффективность. И только после этого преподношу это вам.

С уважением Артём Ющенко.

Адрес сайта http://artomu.com
E-mail: admin@artomu.com

Новости нашего сайта:

В конец записи

Книга "Реестр Windows Vista. На 100%", Глава 6. Настройка операционной системы, 6.1. Запуск компьютера: Службы и драйверы.

Как драйверы, так и службы являются важной частью операционной системы, влияющей как на ее работоспособность, так и на ее быстродействие. Большинство драйверов запускается еще до 1 фазы загрузки Windows Vista, тогда как службы запускаются уже при окончании 1 фазы. Несмотря на все функциональные отличия в работе служб и драйверов, сведения о них хранятся в одной и той же ветви реестра — HKLM\System\CurrentControlSet.

Работа служб в Windows Vista

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

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

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

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

SCM Сведения обо всех зарегистрированных в операционной системе службах содержатся в диспетчере управления службами (SCM). Постоянным представлением базы зарегистрированных в операционной системе служб в диспетчере SCM является ветвь реестра HKLM\SYSTEM\CurrentControlSet\Services.

Также диспетчер SCM предназначен для взаимодействия с SCP. Для этого используется именованный канал \Pipe\Ntsvcs.

И еще одним предназначением SCM является запуск и остановка служб. Для этого он создает именованный канал \Pipe\Net\NtControlPipeX, после чего ждет подключения к данному каналу запускаемой при помощи SCP службы. Если служба подключилась к каналу, SCM передает по каналу команду окончательного запуска службы. После этого служба считается запущенной.

Если же в течение определенного интервала времени (по умолчанию 30 секунд) служба не подключилась к каналу, диспетчер SCM закрывает именованный канал и завершает работу такой службы, сообщая об ошибке. Интервал ожидания подключения службы к именованному каналу определяется значением параметра REG_DWORD типа ServicesPipeTimeout, расположенного в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control.

В операционной системе Windows Vista диспетчером управления службами является файл services.exe. Диспетчер SCM запускается процессом Winlogon.exe еще до запуска диалога входа в систему.

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

Как было сказано выше, сведения о службах, зарегистрированных в операционной системе, содержатся в ветви HKLM\SYSTEM\CurrentControlSet\Services. Также в данной ветви реестра хранятся сведения обо всех драйверах. Каждая служба или драйвер (независимо от того, работает служба в данный момент или нет) имеет отдельный подраздел в данной ветви реестра. Данный подраздел создается при регистрации службы с помощью вызова API-функции CREATESERVICE из библиотеки advapi32.dll.

Каждый подраздел данной ветви содержит в себе как общие сведения о службе (или драйвере), которые одинаковы для всех служб, так и настройки конкретной службы.

Например, к общим сведениям о службе относятся имя и описание службы, путь к файлу службы, способ ее запуска и многое другое. Такие сведения хранятся непосредственно в подразделе службы (а не в его дочерних подразделах), в параметрах, названия которых одинаковы для всех служб. Как правило, используются одни и те же значения всех общих параметров, не зависимо от того, определяется ли подразделом драйвер или служба. Хотя есть и исключения — например, способ запуска служб и драйверов отличается.

Большинство общих параметров имеет строковый тип. Ниже мы опишем многие из них.

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

К основным сведениям можно отнести название службы, ее описание и файл службы — от есть, те сведения, без которых работа службы затруднительна.

DisplayName Данный параметр определяет название службы. Это название используется в различных программах, например, в консоли services.msc, как альтернативный способ идентификации службы. Основным же способом идентификации службы, который используется на уровне операционной системы, является название подраздела реестра, в котором служба описана.

Description Данный параметр содержит описание службы.

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

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

Type Данный параметр имеет тип REG_DWORD. Он определяет тип службы или драйвера. Данный параметр может принимать следующие значения.

  • 0х1. Устройство уровня ядра. Данное значение используется только при описании драйверов.
  • 0х2. Драйвер файловой системы уровня ядра. Данное значение используется только при описании драйверов.
  • 0х4. Аргумент для адаптера (устаревшее значение). Данное значение используется только при описании драйверов.
  • 0х8. Распознавание файловой системы. Данное значение используется только при описании драйверов.
  • 0х10. Программа, запускающая отдельный процесс.
  • 0х20. Программа, запускаемая в общем процессе (это позволяет экономить ресурсы компьютера).
  • 0х100. Данное значение может добавляться к предыдущим значениям. Если оно присутствует в параметре Type, тогда соответствующей службе разрешено взаимодействовать с рабочим столом пользователя (например, она может отображать свои окна и диалоги).

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

Права службы

Основные возможности службы определяются правами, которые данная служба имеет. Права же службы в большей мере зависят от учетной записи, от имени которой запускается служба. Однако в Windows Vista учетная запись является не самым главным способом определения прав службы. В соответствии с концепцией безопасности по умолчанию, которую приводит в жизнь корпорация Microsoft, все меньше служб запускаются от имени локальной системы и со всеми привилегиями.

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

Этот параметр может принимать следующие значения.

  • LocalSystem. Служба запускается с правами локальной системы (данная учетная запись принадлежит к администраторам компьютера). В операционной системе Windows Vista некоторые привилегии данной учетной записи были ограничены.

    Данная учетная запись хранит свои настройки в ветви реестра HKEY_USERS\.DEFAULT. Профиль же этой учетной записи содержится в каталоге %systemdrive%\Users\Default.

  • NT Authority\NetworkService. Служба запускается с правами пользователя, которому разрешено взаимодействовать с сетью.

    Данная учетная запись хранит свои настройки в ветви реестра HKEY_USERS\S-1-5-20. Профиль же этой учетной записи содержится в каталоге %systemroot%\ServiceProfiles\NetworkService.

  • NT AUTHORITY\LocalService. Служба запускается с правами локального пользователя. Данная учетная запись может взаимодействовать с сетью только при помощи нулевых сеансов.

    Данная учетная запись хранит свои настройки в ветви реестра HKEY_USERS\S-1-5-19. Профиль же этой учетной записи содержится в каталоге %systemroot%\ServiceProfiles\LocalService.

  • .\«логин пользователя». Служба запускается с правами данного пользователя.

ServiceSidType Данный параметр является нововведением операционной системы Windows Vista и имеет тип REG_DWORD. Он определят тип идентификатора безопасности SID, присвоенного данной службе. Если значение данного параметра равно 1, тогда служба будет использовать неограниченный SID. А если значение данного параметра равно 3, тогда ограниченный.

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

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

RequiredPrivileges Данный параметр является нововведением операционной системы Windows Vista и имеет тип REG_MULTI_SZ. Он определяет дополнительные привилегии, которые необходимы для работы этой службы.

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

Параметры запуска службы

На процесс запуска службы влияют значения следующих параметров.

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

  • 0. Запускается загрузчиком операционной системы (NTLDR) перед началом этапа инициализации ядра.

    Данное значение используется только при описании драйверов.

  • 1. Запускается подсистемой ввода/вывода при инициализации ядра. При помощи данного значения запускаются драйверы, выполняющие распознавание устройств, не перечисляемых драйвером системной шины.

    Данное значение используется только при описании драйверов.

  • 2. Запускается диспетчером управления сервисами (SMSS) после запуска диалога приветствия winlogon.exe.

    Данное значение используется как при описании служб, так и при описании драйверов (которые не поддерживают Plug`n`Play или являются драйверами файловой системы, не обязательными для загрузки).

  • 3. Драйвер или служба запускаются вручную программами, для работы которых они необходимы.
  • 4. Запуск драйвера или службы запрещен.

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

  • 0. Загрузка операционной системы продолжается — диспетчер ввода-вывода игнорирует возникшую ошибку.
  • 1. Загрузка операционной системы продолжается, однако пользователю выдается предупреждение о возникшей ошибке.
  • 2. Загрузка операционной системы прекращается и выполняется перезагрузка компьютера для запуска в режиме последней удачной конфигурации. Если компьютер загружается именно в режиме последней удачной конфигурации, ошибка игнорируется.
  • 3. Загрузка операционной системы прекращается и выполняется перезагрузка компьютера для запуска в режиме последней удачной конфигурации. Если компьютер загружается именно в режиме последней удачной конфигурации, отображается «синий экран смерти» BSOD.

DelayedAutoStart Данный параметр является нововведением операционной системы Windows Vista и имеет тип REG_DWORD. Если значение этого параметра равно 1, тогда служба будет запускаться автоматически подсистемой SMSS, однако не сразу, а через определенный промежуток времени (с задержкой). Данный параметр используется в том случае, если значение параметра start равно 2.

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

Группы служб и драйверов

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

Последовательность запуска групп описана в параметре типа REG_MULTI_SZ List, ветви HKLM\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder.

Group Данный параметр определяет группу, к которой относится данная служба.

Tag Данный параметр имеет тип REG_DWORD. Он определяет конкретную позицию драйвера в группе, указанной параметром Group.

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

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

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

Если данная служба зависит от службы, которая запускается позже данной службы, тогда будет выдано сообщение об ошибке.

Стандартные дочерние подразделы раздела службы

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

Подраздел Parameters Данный подраздел содержит в себе основные параметры, предназначенные для настройки работы службы. Большинство из них зависят от конкретной службы.

Однако также в данном подразделе могут находиться два стандартных параметра: ServiceDll и ServiceDllUnloadOnStop.

Параметр ServiceDll имеет тип REG_EXPAND_SZ. Он определяет библиотеку, необходимую для работы службы.

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

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

Общий процесс svchost

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

Одним из общих процессов операционной системы Windows Vista является процесс svchost.exe. Данный процесс называется «универсальным» процессом.

Одновременно в операционной системе может существовать несколько запущенных процессов svchost.exe. Каждый из этих процессов содержит в себе службы определенного типа (например, тип службы netsvcs). Типы службы для общего процесса указывается как часть значения параметра ImagePath раздела службы.

Настройки работы универсального процесса svchost.exe, хранятся в ветви HKLM\Software\Microsoft\Windows NT\CurrentVersion\Svchost.

Данная ветвь реестра содержит в себе набор параметров строкового типа, значения которых определяют службы, работа которых основана на общем процессе svchost.exe. Название же этих параметров определяет тип службы для общего процесса, и, заодно, название дочернего подраздела ветви реестра HKLM\Software\Microsoft\Windows NT\CurrentVersion\Svchost, в котором расположены настройки для этих служб.

Дочерние подразделы данной ветви реестра могут содержать в себе три параметра, имеющие тип REG_DWORD. Наиболее интересным из них является параметр DefaultRpcStackSize. Он определяет размер стека RPC, используемый соответствующими службами.

Интерактивные службы

Интерактивными службами называются службы, которым разрешено взаимодействовать с рабочим столом пользователя (значение параметра Type которых больше 0x100).

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

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

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

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

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

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

Вы можете запретить работу служб в интерактивном режиме. Для этого нужно параметру REG_DWORD типа NoInteractiveServices, расположенному в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Windows, присвоить значение 1.

Служба Обнаружение интерактивных служб

Тип запуска: вручную.
Учетная запись: система.
Дополнительные привилегии: SETCBPRIVILEGE, SEASSIGNPRIMARYTOKENPRIVILEGE, SEINCREASEQUOTAPRIVILEGE.
Файлы службы: нет.
Исполняемый файл: UI0Detect.exe.
Подраздел реестра: UI0Detect.
Службы, необходимые для работы данной: нет.

Возможность взаимодействия интерактивных служб с рабочим столом текущего пользователя основана на работе службы ОБНАРУЖЕНИЕ ИНТЕРАКТИВНЫХ СЛУЖБ.

Продолжение следует

Рейтинг: 0 
Оцените: 1 2 3 4 5
В начало записи
Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=361

В избранное