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

Секреты Windows: статьи о реестре, rundll32.exe, программах Книга Реестр Windows Vista. WMI - 1


Есть вопросы по работе с Windows? Задайте их нам и нашим посетителям в разделе Форум (http://onestyle.com.ua/q.php). Возможно, мы сможем помочь вам решить возникшие проблемы.

Уважаемые подписчики, вы часто пользуетесь нашим сайтом http://onestyle.com.ua? В таком случае скажите, что Вам не нравится на нашем сайте? Что бы Вы хотели изменить или добавить? Какими функциями нашего сайта пользоваться не так удобно, как Вам хотелось бы? В общем, подскажите, как нам изменить данный сайт, чтобы пользоваться им было удобнее? И какие дополнительные функции Вы хотели бы, чтобы мы добавили? Опишите свои предложения на форуме

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

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

Книга "Реестр Windows Vista. На 100%", Глава 1. Основные сведения о реестре, 1.3. Языки сценариев и реестр: Инструментарий управления Windows (WMI) - 1.

Еще одним средством работы с реестром является инструментарий управления Windows. Инструментарий управления Windows — это набор свойств и методов, предназначенных для настройки операционной системы Windows. Поэтому для работы с ним нужно пользоваться либо специализированными программами (например, стандартными программами wmic.exe и wbemtest.exe, расположенными в каталоге %systemroot%\system32\wbem), либо сервером сценариев Windows. Ниже для работы с WMI мы будем использовать именно сервер сценариев Windows.

Принцип работы WMI

Основной программой, которая реализует возможности работы инструментария управления Windows, является программа winmgmt.exe. Данная программа расположена в каталоге %systemroot%\system32\wbem и позволяет управлять репозитарием CIM и настройками WMI в целом.

Программа winmgmt.exe

Данная программа поддерживает следующие опции.

  • /backup «путь и имя файла с расширением .rep». Выполняет архивирование репозитария CIM.
  • /restore «путь и имя файла с расширением .rep» «флаг». Выполняет восстановление содержимого репозитария CIM из указанного файла-архива в режиме, указанном в флаге. Если значение флага равно 0, тогда восстановление произойдет только в том случае, если к репозитарию CIM не подключен ни один клиент. Если же значение данного параметра равно 1, тогда репозитарий CIM будет восстановлен в принудительном порядке — с отключением всех клиентов, которые в данный момент к нему подключены.
  • /standalonehost «уровень». Перемещает службу WMI в отдельный процесс svchost.exe с фиксированной конечной точкой ncacn_ip_tcp.0.24158, используя для проверки подлинности при перемещении указанный уровень. По умолчанию используется уровень 4 (RPC_C_AUTHN_LEVEL_PKT).
  • /sharedhost. Перемещает службу WMI в общий процесс svchost.exe.
  • /salvagerepository. Выполняет проверку репозитария CIM на согласование и в случае обнаружения ошибок выполняет его восстановление на основе стандартных mof-файлов.
  • /verifyrepository «путь к репозитарию CIM». Выполняет проверку репозитария CIM на согласование. Если путь к рапозитарию CIM не указан, будет выполнена проверка репозитария CIM, используемого в данный момент.
  • /resetrepository. Восстанавливает репозитарий CIM в исходное на момент установки операционной системы состояние.
  • /resyncperf «PID службы WMI». Выполняет повторную регистрацию системных библиотек производительности в инструментарии управления Windows.

Служба Инструментарий управления Windows

Тип запуска: автоматически.
Учетная запись: система.
Дополнительные привилегии: нет.
Файлы службы: %SystemRoot%\system32\wbem\WMIsvc.dll.
Исполняемый файл: svchost.exe -k netsvcs.
Подраздел реестра: Winmgmt.
Службы, необходимые для работы данной: УДАЛЕННЫЙ ВЫЗОВ ПРОЦЕДУР (RPC) (RPCSS).

Основным способом запуска программы winmgmt.exe,.рассмотренной нами ранее, является использование службы ИНСТРУМЕНТАРИЙ УПРАВЛЕНИЯ WINDOWS. Данная служба управляет интрументарием WMI и ее отключение приведет к невозможности доступа к репозитарию CIM.

Служба WMI Performance Adapter

Тип запуска: вручную.
Учетная запись: система.
Дополнительные привилегии: нет.
Файлы службы: нет.
Исполняемый файл: %systemroot%\system32\wbem\WmiApSrv.exe.
Подраздел реестра: wmiApSrv.
Службы, необходимые для работы данной: нет.

Еще одной службой, влияющей на работу инструментария управления Windows, является служба WMI PERFORMANCE ADAPTER. Она обеспечивает работу библиотеки WMI для клиентов сети.

Минимальные сведения о WMI

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

Основные термины

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

Репозитарий CIM представляет собой базу данных, в которой содержатся описания всех классов, свойств и методов, доступных операционной системе Windows, а также все доступные экземпляры классов.

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

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

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

Кроме шаблона класса, описывающего файлы компьютера, при помощи репозитария CIM можно получить доступ к определенному экземпляру данного класса, который описывает определенный файл. Например, можно получить доступ к экземпляру класса, который описывает файл explorer.exe, расположенный в каталоге %systemroot%. При помощи данного экземпляра класса вы сможете узнать размер данного файла, дату его создания или модификации, атрибуты файла и т.д. Кроме того, получив доступ к экземпляру класса, вы сможете удалить или копировать соответствующий файл, воспользовавшись методами класса.

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

Кроме функции структурирования классов, на основе пространства имен реализована безопасность инструментария управления WMI. Администратор может изменить права доступа определенных пользователей к конкретному пространству имен, а следовательно, и к классам, которые в нем находятся. Для изменения прав пользователей нужно воспользоваться консолью WmiMgmt.msc.

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

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

Метод Также классы могут содержать описания методов. Если свойство класса можно назвать переменной, то метод — процедурой или функцией.

Моникер Для подключения к репозитарию CIM используется специальная строка, называемая моникером. Моникер указывает компьютер, пространство имен, класс, к которому нужно подключиться, а также параметры подключения к репозитарию CIM.

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

Строка моникера

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

  • Winmgmts::«класс». Данный синтаксис позволяет подключиться к определенному классу репозитария CIM, хранящемуся в пространстве имен по умолчанию.
  • Winmgmts::«класс»:«метод». Данный синтаксис выполняет подключение к определенному классу репозитария CIM, хранящемуся в пространстве имен по умолчанию, после чего возвращает указать на конкретный метод данного класса.
  • Winmgmts::«класс».«ключевое свойство»=«значение». Данный синтаксис возвращает указатель на конкретный экземпляр класса, хранящегося в пространстве имен по умолчанию.

Если в строке моникера не указано пространство имен, тогда по умолчанию выполняется подключение к пространству имен \\root\cimv2.

Заметьте, что пространство имен по умолчанию можно изменить при помощи строкового параметра Default Namespace ветви реестра HKLM\SOFTWARE\Microsoft\WBEM\Scripting.

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

Winmgmts:\\[«компьютер»]\«пространство имен»:«класс» С помощью данного синтаксиса дополнительно указывается компьютер (если указать точку, подключение будет выполнено к локальному компьютеру), к репозитарию которого мы подключаемся, а также определяется пространство имен. По умолчанию подключение к удаленному компьютеру выполняется от имени текущего пользователя.

Winmgmts:[{impersonationLevel=«уровень заимствования прав»}!]\\[«компьютер»]\«пространство имен»:«класс» Более расширенный синтаксис моникера. В нем мы также указываем ключевое слово impersonationLevel, которое поддерживает одно из следующих значений.

  • Anonymous. Предоставить минимальные привилегии доступа к репозитарию.
  • Identify. Предоставить минимальные привилегии доступа к репозитарию, но если потребуются повышенные привилегии, запросить их у пользователя.
  • Impersonate. Предоставить те же привилегии, которые имеет подключаемый к репозитарию пользователь. Данный уровень доступа используется по умолчанию, хотя используемый по умолчанию уровень доступа можно изменить при помощи параметра REG_DWORD типа Default Impersonation Level, расположенного в ветви реестра HKLM\SOFTWARE\Microsoft\WBEM\Scripting.

Более подробно об уровне заимствования прав мы поговорим при описании работы ActiveX-объектов.

Winmgmts:[{impersonationLevel=«уровень заимствования прав», AuthenticationLevel=«уровень аутентификации»}!]\\[«компьютер»]\«пространство имен»:«класс» Также в моникере можно указать уровень аутентификации пользователя при подключении к WMI. Для этого применяется ключевое слово AuthenticationLevel, которое может содержать следующие значения.

  • Default. Данный уровень применяется по умолчанию. Его использование говорит о том, что при подключении применяются настройки аутентификации Windows.
  • None. Вообще не выполнять аутентификацию пользователя.
  • Connect. Выполнять аутентификацию пользователя только при подключении к репозитарию.
  • Call. Выполнять аутентификацию пользователя при получении любого запроса от сервера.
  • Pkt. Выполнять проверку всех данные, полученных от клиента.
  • PktIntegrity. Выполнять проверку данных как пользователя, так и сервера.
  • PktPrivacy. Выполнять проверку данных как пользователя, так и сервера. Кроме того, выполнять шифрование передаваемых данных.

Winmgmts:[{impersonationLevel=«уровень заимствования прав», AuthenticationLevel=«уровень аутентификации»}, (привилегия, привилегия и т.д.)!]\\[«компьютер»]\«пространство имен»:«класс» Самый расширенный синтаксис моникера. Кроме всего прочего, в нем мы также указываем дополнительные привилегии, которые должны быть предоставлены пользователю при подключении. Список всех доступных в операционной системе Windows Vista привилегий будет представлен в следующих главах книги.

Доступ к реестру

Для доступа к реестру при помощи инструментария CIM предназначен класс StdRegProv. Данный класс принадлежит пространству имен root/Default, и содержит набор методов для работы с реестром операционной системы.

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

Редактирование параметров реестра

Для редактирования параметров реестра WMI использует сразу пять методов, по методу на поддерживаемый тип параметра: SetBinaryValue, SetDWORDValue, SetExpandedStringValue, SetMultiStringValue и SetStringValue. Эти параметры имеют один существенный недостаток — если с их помощью попытаться отредактировать параметр реестра, который находится в несуществующей ветви реестра, они выдадут ошибку с номером 2. То есть, данные методы не способны автоматически создавать несуществующие подразделы реестра, указанные во входящих параметрах, как это делало свойство сервера сценариев Windows.

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

  • идентификатор корневого раздела ветви реестра;
  • остальной путь к ветви реестра;
  • название параметра;
  • значение параметра.

Ниже мы подробнее опишем возможные значения некоторых из этих входящих параметров.

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

  • 0x80000000. Заменяет корневой раздел HKEY_CLASSES_ROOT.
  • 0x80000001. Заменяет корневой раздел HKEY_CURRENT_USER.
  • 0x80000002. Заменяет корневой раздел HKEY_LOCAL_MACHINE. Данный корневой раздел используется по умолчанию, если при вызове метода идентификатор не задан.
  • 0x80000003. Заменяет корневой раздел HKEY_USERS.
  • 0x80000005. Заменяет корневой раздел HKEY_CURRENT_CONFIG.

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

Примеры

В качестве примера давайте рассмотрим сценарий, который будет присваивать параметру REG_DWORD типа PaintDesktopVersion, расположенному в ветви реестра HKCU\Control Panel\Desktop, значение 1. Это приведет к отображению версии операционной системы на рабочем столе (после перезагрузки компьютера версия появится в правом нижнем углу экрана).

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

Обратите внимание на последние строчки листинга, где представлены примеры создания параметров типа REG_MULTI_SZ и REG_BINARY.

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

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

В избранное