Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Всё о работе в Интернет" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Секреты Windows: статьи о реестре, rundll32.exe, программах
Глава 5. Стандартные службы Windows Vista. Основные сведения о службах Вы написали интересную статью на околокомпьютерную тематику? Мы можем опубликовать ее на своем сайте (http://www.onestyle.com.ua). Естественно, мы сохраним ваши авторские права, и укажем при публикации все реквизиты, которые вы посчитаете нужным указать: от вашего ника и имени, до адреса вашего сайта и места вашего жительства.
Пишите нам: onestyle СОБАЧКА list ТОЧКА ru В составе операционной системы Windows Vista появилось множество новых служб, которые предоставляют различные возможности и, конечно, виляют на производительность работы компьютера. В этой главе мы рассмотрим назначение всех доступных служб операционной системы Windows Vista, а также попробуем разобраться, как их работа влияет на производительность компьютера, нужны ли они вообще, а также рассмотрим основные параметры реестра, предназначенные для настройки тех или иных служб. Но сначала давайте разберемся, что вообще представляют собой службы и как хранится информация о них в реестре. Служба представляет собой программу, как правило, работающую в фоновом режиме и расширяющую возможности операционной системы. При этом все службы состоят из трех компонентов: собственно файла службы, программы управления службой (SCP) и диспетчера управления службами (SCM). Файл службы отличается от обычной программы только тем, что в нем реализованы дополнительные функции взаимодействия с SCM. Программа управления службой (SCP) предназначена для запуска, остановки и настройки службы (для взаимодействия с SCM). Каждая служба может поставляться со своей собственной программой управления службой, однако чаще всего службы используют стандартный SCP операционной системы Windows. Например, SCP является оснастка операционной системы services.msc или программа командной строки sc.exe. Диспетчер управления службами SCM реализован в виде файла services.exe и содержит в себе сведения обо всех зарегистрированных в операционной системе службах. Он запускается процессом Winlogon.exe еще до запуска графического интерфейса (диалога входа в систему). Диспетчер SCM взаимодействует с SCP при помощи именованного канала \Pipe\Ntsvcs. Также SCM, при запуске очередной службы, создает канал \Pipe\Net\NtControlPipeX, после чего ждет подключения запускаемой службы к этому каналу. Если по истечении определенного интервала (по умолчанию 30 секунд) служба так и не подключилась к каналу, SCM завершает работу службы. Интервал ожидания подключения службы к каналу определяется параметром REG_DWORD типа ServicesPipeTimeout, расположенным в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control. Если же служба подключилась к каналу, SCM передает по каналу команду окончательного запуска службы. Сведения обо всех службах и драйверах, установленных в системе, хранятся в подразделах ветви реестра HKLM\SYSTEM\CurrentControlSet\Services. Данная ветвь реестра является постоянным представлением базы служб SCM. Каждая установленная служба или драйвер (независимо от того, работает ли он в данный момент или нет) имеет свой собственный подраздел в данной ветви реестра. Данный подраздел создается в том момент, когда служба регистрируется при помощи функции CREATESERVICE из библиотеки advapi32.dll. Параметры, описывающие службыПодраздел службы хранит в себе общие сведения о службе, например, такие как имя и описание службы, ее исполняемый файл, способ запуска и т.д., а также настройки службы, если такие имеются. Общие сведения о работе служб хранятся в одних и тех же параметрах (с одинаковыми названиями), тогда как настройки службы могут описываться любыми параметрами, названия которых придумывают сами создатели службы. Кроме того, общие сведения о службах всегда располагаются непосредственно в ветви реестра HKLM\SYSTEM\CurrentControlSet\Services\«название службы», тогда как параметры настройки службы могут находиться в любом подразделе данной ветви реестра (но чаще всего находятся в подразделе Parameters). В данной главе мы рассмотрим параметры реестра, определяющие общие сведения о службах, а далее в этой книге будут приведены параметры настройки конкретных служб. Group Данный параметр строкового типа определяет группу служб или драйверов, к которой относится данная служба. От названия группы зависит время, когда данная служба будет запущена. Дело в том, что все группы служб запускаются последовательно — сначала службы, принадлежащие одной группе, потом службы, принадлежащие к другой группе и т.д. Если же служба не принадлежит ни к одной из групп, она запускается одной из самых последних. Сама последовательность запуска групп служб описана в параметре типа REG_MULTI_SZ List, расположенном в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder. Просмотреть список групп, зарегистрированных в операционной системе Windows Vista, можно при помощи класса Win32_LoadOrderGroup, принадлежащего пространству имен \\Root\Cimv2. Экземпляры данного класса описывают отдельную группу и поддерживают следующие свойства: DriverEnabled (определяет, могут ли в данную группу входить драйверы), GroupOrder (определяет очередность загрузки элементов данной группы), Name (ключевое свойство, определяющее название группы). DependOnGroup Данный параметр типа REG_MULTI_SZ определяет группы служб или драйверов, которые обязательно должны быть запущены перед запуском данной службы. Предполагается, что все группы служб, описанные в этом параметре, необходимы для работы данной службы, поэтому без запуска любой описанной в параметре группы, данная служба запущена не будет. DependOnService Данный параметр типа REG_MULTI_SZ определяет службы, которые должны быть запущены перед запуском данной службы. Предполагается, что все службы, описанные в этом параметре, необходимы для работы данной службы, поэтому без запуска любой описанной в параметре службы, данная служба запущена не будет. Если служба зависит от группы, которая запускается позже группы, в которую входит служба, тогда выдается сообщение об ошибке запуска. Также данная ошибка выдается, если служба зависит от другой службы, которая входит в группу, запускаемую позднее. DisplayName Данный параметр строкового типа определяет название службы, используемое для отображения службы в оснастке services.msc. Description Данный параметр строкового типа определяет описание службы, используемое для отображения строки описания службы в оснастке services.msc. ObjectName Данный параметр строкового типа определяет учетную запись пользователя, с правами которого будет запущена данная служба. Этот параметр может принимать следующие значения.
ErrorControl Данный параметр типа REG_DWORD определяет поведение системы при возникновении ошибок во время запуска данной службы. Данный параметр может принимать следующие значения.
Последняя удачная конфигурация загружает операционную систему на основе ветви реестра HKLM\SYSTEM\ControlSetX, номер которой указан в параметре REG_DWORD типа LastKnownGood, расположенном в ветви реестра HKLM\SYSTEM\Select. По умолчанию значение параметра LastKnownGood изменяется после каждого успешного входа пользователя в операционную систему. Однако сторонние службы могут изменить условие, при котором загрузка операционной системы считается удачной и значение параметра LastKnownGood изменяется. Для этого им достаточно описать новую программу верификации запуска системы при помощи ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\BootVerificationProgram. Также им нужно будет присвоить параметру строкового типа ReportBootOk, расположенному в ветви реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, значение 0. Это необходимо сделать, чтобы операционная система не вызывала функцию NotifyBootConfigStatus при входе пользователя в систему (так как эта функция будет вызываться из новой программы верификации). Данная функция вызывается перед сохранением последней удачной конфигурации. ImagePath Данный параметр строкового типа определяет путь к исполняемому файлу службы. Именно этот файл представляет собой службу, и будет запускаться при ее запуске. Start Данный параметр типа REG_DWORD определяет, когда именно будет запускаться данная служба. Данный параметр может принимать следующие значения:
DelayedAutoStart Данный параметр REG_DWORD типа является нововведением операционной системы Windows Vista. Если его значение равно 1, тогда служба будет запускаться не сразу, а через определенный промежуток времени, чтобы не загружать операционную систему (с задержкой). Как правило, данный параметр используется в том случае, когда значение параметра start равно 2. ServiceSidType Данный параметр REG_DWORD типа является нововведением операционной системы Windows Vista. Он определят тип SID, который был присвоен соответсвующей службе. Если значение данного параметра равно 1, тогда служба будет использовать неограниченный SID. А если значение данного параметра равно 3, тогда ограниченный. Security Данный параметр REG_BINARY типа содержит дескриптор защиты службы, определящий права пользователей, которые могут получить доступ к службе. Type Данный параметр типа REG_DWORD определяет тип службы. Возможны следующие значения этого параметра.
Запретить работу служб в интерактивном режиме можно при помощи параметра REG_DWORD типа NoInteractiveServices, расположенного в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Windows. FailureActions Данный параметр REG_BINARY типа определяет действия, которые будет выполняться в том случае, если в работе службы произошел сбой. При этом сначала в этом параметре описываются действия для первой неудачной попытки запуска, потом для второй, а потом для всех остальных. RequiredPrivileges Данный параметр типа REG_MULTI_SZ определяет особые привилегии, которые необходимы для работы данной службы. Этот параметр впервые появился в операционной системе Windows Vista с целью повышения общей безопасности компьютера. Теперь службы, которым полностью не нужны системные права, но необходимо выполнять определенные системные операции, могут быть запущены с пониженными правами, но при этом им будет предоставлено определенное системное право, которое необходимо для их работы. Возможны следующие значения этого параметра. Для получения сведений о службах, установленных в операционной системе, можно использовать класс Win32_Service, который принадлежит пространству имен root\cimv2, и является производным от классов Win32_BaseService и CIM_Service. Например, он поддерживает следующие свойства: AcceptPause (определяет, разрешено ли приостанавливать работу службы), AcceptStop (определяет, разрешено ли останавливать работу службы), Description (содержит строку описания службы), DesktopInteract (определяет, может ли служба взаимодейтвовать с рабочим столом пользователя), DisplayName (определяет название службы), ErrorControl (определяет поведение операционной системы при возникновении ошибки во время запуска данной службы), Name (ключевое свойство, определяющее имя службы), PathName (определяет путь к исполняемому файлу службы), ProcessID (определяет PID процесса запущенной службы), Started (определяет, запущена ли служба в данный момент), StartName (определяет учетную запись, от имени которой запускается служба). Также данный класс поддерживает следующие методы: Create (позволяет создать службу), Delete (позволяет удалить службу), Change (позволяет изменить настройки службы), ChangeStartMode (позволяет изменить режим запуска службы), InterrogateService (обновляет информацию о службе), PauseService (приостанавливает работу службы), ResumeService. (продолжает работу службы), StartService (запускает работу службы), StopService (останавливает работу службы), UserControlService (посылает службе код управления). Это не все значения, которые может содержать данный параметр. Если вы знакомы с сервером инструментариев Windows (WMI), тогда, наверное, уже догадались, что этот параметр может содержать в себе те же константы привилегий, что и сценарии WMI. Также некоторые параметры реестра, описывающие стандартные настройки службы, хранятся в подразделе Parameters. К ним можно отнести два параметра: ServiceDll и ServiceDllUnloadOnStop. Первый параметр имеет тип REG_EXPAND_SZ и определяет библиотеку, необходимую для работы данной службы. Второй же параметр имеет тип REG_DWORD и определяет, будут ли выгружаться из оперативной памяти компьютера библиотеки, необходимые для работы данной службы, если сама служба была остановлена. Кроме того, некоторые службы и драйверы содержат в своей ветви реестра подразделы Performance. В данных подразделах описывается библиотека, в которой находятся счетчики производительности соответсвующей службы, а также индивидуальные параметры работы этих счетчиков. Например, в данной ветви реестра может находиться параметр REG_DWORD типа Collect Timeout, который определяет таймаут, в течение которого счетчики должны выполнить задание и ответить на запрос ссотояния. Настройки служб svchostКак мы уже узнали, служба может работать как в собственном процессе, так и в одном из общих процессов. Это позволяет экономить ресурсы компьютера. Хотя при этом возникается другая проблема — если возникнет ошибка в работе одной из служб, будет завершена работа общего процесса, а вместе с ним, и всех служб, которые в нем работали. Одним из общих процессов для запуска служб является процесс svchost.exe (например, также общим процессом является процесс services.exe). Данный процесс также называется «универсальным» процессом. Одновременно в операционной системе может существовать несколько запущенных процессов svchost.exe. При этом каждый из процессов содержит в себе службы определенного типа (например, типа netsvcs). Данные типы служб указываются как опция строки запуска службы, расположенной в параметре ImagePath ветви службы. Все службы, исполняемый файл которых является частью файла svchost.exe, имеют несколько настраиваемых параметров, расположенных в ветви реестра HKLM\Software\Microsoft\Windows NT\CurrentVersion\Svchost. Данная ветвь реестра содержит в себе набор параметров строкового типа, значения которых определяют службы, исполняемый файл которых является частью файла svchost.exe. Название же этих параметров определяет название дочернего подраздела ветви реестра HKLM\Software\Microsoft\Windows NT\CurrentVersion\Svchost, в котором расположены настройки для этих служб. Также название этих параметров соответствуют записи SCM, под которой эти службы исполняются. В этих подразделах могут содержаться три параметра, имеющие тип REG_DWORD, однако наиболее интересным из них является параметр DefaultRpcStackSize. Он определяет размер стека RPC, используемый соответствующими службами. Основы работы драйверовКак вы знаете, в ветви реестра HKLM\SYSTEM\CurrentControlSet\Services описываются не только установленные в операционной системе службы, но и драйверы. При этом драйверы описываются при помощи тех же основных параметров реестра, что и службы. Хотя значения, присваемые данным параметрам, могут отличаться. Так, например, параметр Type для драйверов может использовать только значения 1, 2 и 4. А параметр Start — значения 0 и 1. Изменить тип запуска драйверов можно не только при помощи реестра, но и при помощи оснастки DEVICE MANAGER (devmgmt.msc). Для этого вам нужно сначала включить отображение скрытых устройств (в меню VIEW установить флажок SHOW HIDDEN DEVICE), после чего перейти к разделу дерева оснастки Non-Plug and Play Drivers. Данный раздел содержит в себе список всех установленных в операционной системе драйверов, которые не поддерживают технологию Pug-n-Play. При этом если вы отобразите диалог PROPERTIES (при помощи одноименной команды контекстного меню) любого из этих драйверов, и перейдете на вкладку DRIVER, то в поле STARTUP сможете изменить тип запуска соответствующего драйвера. По умолчанию оснастка Device Manager не отображает сведения о не существующих в данный момент устройствах или драйверах (например, если драйвер устройства был установлен, а потом устройство было извлечено из компьютера). Если же вам нужно изменить параметры именно такого устройства, тогда достаточно создать системную переменную DEVMGR_SHOW_NONPRESENT_DEVICES и присвоить ей значение 1. После этого вы сможете увидеть не существующие в данный момент устройства, если в меню View установите флажок Show hidden device. Для создания данной системной переменной можно воспользоваться либо реестром (создать параметр строкового типа DEVMGR_SHOW_NONPRESENT_DEVICES в ветви HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment), либо диалогом Environment Variables (отображается после нажатия на кнопку Environment Variables…, расположенную на вкладке Advanced диалога System Properties). Также список системных драйверов и их описание, а также драйверов, имеющих цифровую подпись, можно просмотреть при помощи программы msinfo32.exe. Для этого достаточно запустить данную программу и перейти к разделам Software Environment/System Drivers и Software Environment/Signed Drivers. Список минифильтров, установленных в операционной системе, можно просмотреть при помощи программы командной строки fltmc.exe. Если в поле напротив записи драйвера указано значение <ltLegacy>, тогда это фильтр. Иначе — минифильтр. При этом в поле Num Instances указано количество экземпляров данного минифильтра. Диспетчер фильтров — это драйвер фильтра файловой системы. Он упрощает разработку дополнительных драйверов файловой системы от сторонних разработчиков, позволяя им пользоваться уже созданными и откорректированными функциями. Минифильтр представляет собой драйвер, разработанный для модели диспетчера фильтров. Продолжение следует Рейтинг: 0
Оцените: 1 2 3 4 5 moemesto.ru bobrdobr.ru
- добавить в социальные закладки
В начало записиОригинал статьи: http://www.onestyle.com.ua/txt.php?u=489
|
В избранное | ||