Шрифт:
Интервал:
Закладка:
■ DeleteKey — удаляет раздел в ветви реестра. Для его вызова также необходимы следующие два параметра: идентификатор корневого раздела ветви реестра (аналог переменной RootKey приведенного сценария), а также остальной путь к ветви реестра, которую нужно удалить (в том числе и сам удаляемый раздел реестра).
■ EnumKey — в сценарии был рассмотрен метод для энумерации параметров указанной ветви реестра, этот же метод возвращает разделы, вложенные в указанную ветвь реестра. Для его работы необходимы следующие параметры: идентификатор корневого раздела ветви реестра (аналог переменной RootKey приведенного сценария), остальной путь к ветви реестра, разделы которой нужно перечислить, а также переменная, используемая для хранения массива найденных в указанной ветви разделов (например, аналог переменной names нашего сценария).
■ DeleteValue — удаляет указанный параметр из ветви реестра. Для его работы необходимо указать следующие три параметра: идентификатор корневого раздела ветви реестра (аналог переменной RootKey приведенного сценария), остальной путь к ветви реестра, содержащей удаляемый параметр, а также название удаляемого параметра (если название не указано, то будет удалено значение параметра (По умолчанию) ).
■ SetDWORDValue — создает или изменяет указанный параметр DWORD-типа в ветви реестра. Для его работы необходимо указать следующие четыре параметра: идентификатор корневого раздела ветви реестра (аналог переменной RootKey приведенного сценария), остальной путь к ветви реестра, содержащей изменяемый параметр, название изменяемого параметра (или создаваемого), а также новое значение, которое необходимо присвоить указанному параметру. Если название изменяемого параметра указано не будет, то нужно изменить значение параметра (По умолчанию) данной ветви реестра.
■ CheckAccess — определяет, разрешен ли пользователю доступ к указанной ветви реестра. Если метод выполнился успешно, то он возвратит значение 0, иначе — любое другое значение. Для его работы необходимы следующие четыре параметра: идентификатор корневого раздела ветви реестра (аналог переменной RootKey приведенного сценария), остальной путь к ветви реестра, права на которую необходимо проверить, флаг для определения проверяемых прав, а также переменная, в которую будет помещен результат выполнения метода. Если значение этой переменной будет равно true, то пользователь обладает нужными правами на данную ветвь реестра, иначе возвращается значение false.
Флаг для определения проверяемых прав является битовой маской, значения которой определены в файле Winnt.h. Этот флаг может содержать следующие значения:
■ 0X0001 — KEY_QUERY_VALUE (разрешено запрашивать значения из дочерних разделов вашей ветви реестра);
■ 0X0002 — KEY_SET_VALUE (разрешено создание, удаление и установка значений параметров вашей ветви реестра);
■ 0X0004 — KEY_CREATE_SUB_KEY (разрешено создание и удаление дочерних разделов вашей ветви реестра);
■ 0X0008 — KEY_ENUMERATE_SUB_KEYS (разрешена энумерация дочерних разделов вашей ветви реестра);
■ 0X0010 — KEY_NOTIFY (разрешен вывод подтверждения на запрос изменения параметров или дочерних разделов вашей ветви реестра);
■ 0X0020 — KEY_CREATE_LINK (используется системой);
■ 0x00010000 — DELETE (разрешено удаление);
■ 0x00020000 — READ_CONTROL (разрешено управление чтением);
■ 0X00040000— WRITE_DAC (разрешен избирательный контроль над доступом к записи);
■ 0X00080000 — WRITE_OWNER (разрешено изменение владельца ветви).
В классе StdRegProv также описаны методы SetBinaryValue, SetExpandedStringValue, SetMultiStringValue, SetStringValue, но мы их описывать не будем, так как их вызов аналогичен вызову описанного выше метода SetDWORDValue.
ПРИМЕЧАНИЕ
Подробнее о классе StdRegProv можно узнать из стандартного файла Windows XP regevent.mfl, расположенного в каталоге %systemroot%SYSTEM32wbem.
Создание, завершение и просмотр учетной записи процесса
К другим основным возможностям инструментария управления WMI относятся возможности работы с процессами, запущенными на удаленном или локальном компьютере. При этом инструментарий предоставляет возможности не только по запуску или завершению процесса, но и по определению учетной записи, от имени которой запущен определенный процесс. Для работы с процессами используется класс Win32_Process, принадлежащий к пространству имен rootcimv2. Рассмотрим маленький пример по созданию нового процесса с использованием метода Create.
Листинг 11.4. Создание нового процессаset obj = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\.root cimv2:Win32_Process")
obj.Create "C:WINDOWSregedit.exe"
Действительно, маленький пример. Теперь подробнее рассмотрим методы класса Win32_Process, направленные на работу с процессами.
■ Create — как уже известно, данный метод используется для создания процесса. При этом после своего выполнения метод возвращает следующие значения (это не все):
• 0 — успешное завершение;
• 2 — пользователь не имеет доступа к запрашиваемым данным;
• 3 — у пользователя нет достаточных привилегий;
• 8 — неизвестная ошибка;
• 9 — пользователь не имеет необходимых привилегий;
• 21 — указан недопустимый параметр.
Несмотря на то, что при вызове данного метода был использован только один параметр, на самом деле для работы с ним нужны четыре параметра. Во-первых, это путь к файлу, который будет вызван (в данном случае применялся только этот параметр). Во-вторых, это путь к каталогу, который должен использовать-ся вызываемым процессом (если он не задан, то будет использоваться каталог, в котором находится запускаемый файл). В-третьих, это строка начальной конфигурации процесса (если она не задана, то будет применяться пустая строка ("")). В-четвертых, это переменная, которой будет присвоен идентификатор созданного процесса.
■ Terminate — прекращает процесс и все его дочерние процессы.
■ GetOwner — возвращает учетную запись пользователя, от имени которого был запущен процесс, а также домен, к которому он принадлежит.
■ GetOwnerSid — возвращает SID пользователя, от имени которого был запущен процесс.
■ SetPriority — устанавливает приоритет выполнения определенного процесса.
■ AttachDebugger — вызывает отладчик данного процесса.
ПРИМЕЧАНИЕ
За более детальной информацией обращайтесь к файлу cimwin32.mfl, расположенному в каталоге %systemroot%SYSTEM32wbem.
Выключение, перезагрузка компьютера, завершение сеанса пользователя
С помощью инструментария WMI можно выключить удаленный или локальный компьютер, перезагрузить его или завершить сеанс текущего пользователя. Рассмотрим пример завершения сеанса текущего пользователя на локальном компьютере (если у вас есть удаленный компьютер, то при подключении к пространству имен вместо точки необходимо указать его имя). Особенность данного примера состоит в другом способе подключения к классу — с помощью базы данных CIMOM.
Листинг 11.5. Завершение сеанса пользователя компьютера'Подключаемся к пространству имен rootcimv2
set objWMIService = GetObject("winmgmts:" & "{impersonationLevel = impersonate}!\.rootcimv2")
'Выполняем SQL-запрос для подключения к классу
set colSoftware = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
'Вызываем метод для завершения сеанса пользователя. Метод для своей
'работы использует один параметр (точнее, два, но второй параметр на данный
'момент не используется) – флаг, указывающий на необходимое действие.
'В нашем случае флаг равен 0, что говорит о необходимости завершения сеанса
'пользователя .Для осуществления возможности перезагрузки или выключения
'компьютера необходимо, чтобы инициирующий перезагрузку процесс обладал
'правом SE_SHUTDOWN_NAME. Остальные значения флага определяются от бита,
'установленного в нем. Биты описаны следующим образом: "Завершение работы",
'"Перезагрузка", "Принудительно", "Питание выключено"
for each objSoftware in colSoftware
objSoftware.Win32Shutdown 0
next
Как правило, администраторы локального компьютера обладают правами на завершение сеанса. Другие же действия по умолчанию возможны от имени системы.
Кроме метода Win32 Shutdown, класс Win32_OperatingSystem описывает еще три метода. Если вызывающий процесс обладает правом SE_SHUTDOWN_NAME, то выполняются следующие действия.
■ Reboot — компьютер будет перезагружен. Метод не имеет параметров, но при успешном выполнении возвращает 0.
■ Shutdown — компьютер будет выключен. Метод не имеет параметров, но при успешном выполнении возвращает 0.
■ SetDateTime — будет установлено системное время компьютера. Данный метод для своей работы требует один параметр, определяющий новое время, которое нужно установить (имеет тип DateTime, имеющий довольно странный формат, например установка параметра равным "00000000000000.000000:000" обнуляет время).
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Windows Vista - Сергей Вавилов - Программное обеспечение
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Основы программирования в Linux - Нейл Мэтью - Программное обеспечение
- Photoshop CS2 и цифровая фотография (Самоучитель). Главы 1-9 - Солоницын Юрий - Программное обеспечение