Оснастки администрирования Windows XP
Журналы и оповещения производительности
Оснастка предназначена для наблюдения за работой устройств, установленных на компьютере. Она содержит большой набор функций, что является как несомненным плюсом, так и большим минусом. Минус заключается в довольно сложном механизме работы с оснасткой, который может сначала отпугнуть пользователя операционной системы Windows XP. Оснастка входит в состав стандартной консоли perfmon.msc, работа с которой и будет рассмотрена. Оснастка Журналы и оповещения производительности имеет GUID-номер {7478EF61-8C46-11d1-8D99-00A0C913CAD4}, после запрещения которого доступ к оснастке будет заблокирован. В консоль Производительность также входит ActiveX-объект Системный монитор, отображение которого можно запретить с помощью GUID-номера {C96401CF-0E17-11D3-885B-00C04F72C717}.
Чаще всего консоль Производительность используется для определения устройств компьютера, которые пора улучшить, достигнув тем самым максимального повышения производительности от покупки нового устройства. Именно с этой точки зрения и будет рассмотрена данная консоль.
Системный монитор
После ввода в командной строке Выполнить команды perfmon.msc консоль управления Microsoft обращается к содержимому ветвей реестра HKEY_CURRENT_USER\Software\Microsoft\SystemMonitor и HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib, параметры которых будут рассмотрены чуть позже. После ввода команды перед вами отобразится окно консоли Производительность, открытое на ActiveX-объекте Системный монитор (рис. 11.1).
Рис. 11.1. Окно консоли Производительность
С помощью ActiveX-объекта Системный монитор можно проследить работу какого-либо оборудования, установленного на компьютере, в реальном режиме времени. При этом существует множество параметров работы оборудования, которые можно просмотреть (с помощью так называемых счетчиков).
Окно системного монитора состоит из трех областей — области панели инструментов системного монитора (расположена вверху консоли и содержит набор кнопок быстрого доступа), области для отображения результатов работы устройств (средняя область) и области счетчиков, за которыми выполняется слежение (расположена внизу консоли).
Добавление счетчиков
Для примера попробуем добавить счетчики производительности. Для начала удалите все используемые в данный момент счетчики. Для этого нужно выделить счетчик в области счетчиков и нажать клавишу Delete. После этого вызовите контекстное меню в любой из областей системного монитора и выберите команду Добавить счетчики. Это приведет к отображению диалогового окна, приведенного на рис. 11.2.
Рис. 11.2. Окно добавления счетчиков
С помощью данного окна можно определить, счетчики какого компьютера будут подключаться к консоли (локального или любого другого, подключенного к сети), определить устройство (список Объект), за работой которого вы будете следить, а также определить сами счетчики (переключатель Выбрать счетчики из списка) параметров работы устройства, которые будут отслеживаться. После выбора счетчика в правом окне можно выбрать экземпляр устройства, работа которого будет отслеживаться. На рис. 11.2 отображено только два экземпляра устройства — _Total и 0. Экземпляр 0 определяет первый процессор, установленный в системе, а экземпляр _Total определяет слежение за всеми процессорами, установленными на компьютере (при этом будет выводиться среднее арифметическое данных по работе процессоров). Если на компьютере установлен только один процессор, то экземпляр _Total эквивалентен экземпляру 0, но если бы компьютер содержал большее количество установленных процессоров, то присутствовали бы и другие экземпляры устройств: 1 — для второго процессора, 2 — для третьего процессора и т.д.
ПРИМЕЧАНИЕ
Если значение DWORD-параметра Disable Performance Counters, расположенного в ветви системного реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib, будет равно 1, то будет запрещено добавление счетчиков, а также работа с ActiveX-объектом Системный монитор. Если значение данного параметра будет равно 1, то список счетчиков просто-напросто будет пуст. Аналогичного результата можно добиться, если присвоить DWORD-параметру Updating той же ветви реестра значение, равное 0.
ВНИМАНИЕ
Название экземпляра Total можно изменить на любое другое. Для этого применяется параметр строкового типа TotalInstanceName, расположенный в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Perflib. При этом следует учитывать, что все счетчики, загруженные до изменения значения параметра TotalInstanceName, работать не будут.
Если просмотреть список объектов, за которыми можно следить, а также количество различных счетчиков, реализованных для них, можно ужаснуться. Что же из этого многообразия выбрать? Частично решить этот вопрос вам поможет кнопка Объяснение, после выбора счетчика и нажатия которой перед вами отобразится диалоговое окно с описанием того, за чем же следит данный счетчик. Вам также могут помочь советы профессионалов, которые предлагают следить за следующими компонентами (если необходимо определить общий уровень производительности компьютера или устройства, которые пора улучшить) компьютера: Процессор, Память, Система и Физический диск. Вкратце рассмотрим наиболее интересные счетчики данных устройств.
ПРИМЕЧАНИЕ
В любом случае, здесь не будут рассмотрены все объекты, счетчики которых можно использовать, так как количество объектов на различных компьютерах может быть разное. Это связано с тем, что любая служба может добавить свои собственные счетчики. Для этого достаточно в параметре строкового типа Library указать библиотеку, содержащую функции работы с новыми счетчиками. Параметр расположен в разделе Performance ветви реестра, хранящей сведения о данной службе (на страницах книги уже несколько раз упоминалось, что настройки служб находятся в отдельных разделах ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services). Можно также удалить возможность работы со счетчиками данного объекта, просто удалив раздел Performance (или переименовав его). Но можно поступить и намного проще — просто запретить работу счетчиков данного объекта. Для этого необходимо в разделе Performance данной службы создать DWORD-параметр Disable Performance Counters и присвоить ему значение 1.
Основные параметры раздела Performance неинтересны и содержат названия функций библиотеки для работы со счетчиками.
Для процессора это следующие счетчики.
■ % загруженности процессора — в зависимости от экземпляра устройства определяет процент загруженности конкретного процессора или всех процессоров, установленных на компьютере. Аналогичную информацию можно просмотреть и в Диспетчере задач Windows (на вкладке Быстродействие). Если процессор постоянно загружен на 70-90%, значит, пора покупать более мощный процессор.
■ % времени прерываний — в зависимости от экземпляра устройства определяет процент времени загруженности конкретного процессора или всех процессоров, установленных на компьютере, в течение которого процессор обрабатывает различные аппаратные прерывания. Если показания данного счетчика колеблются в пределах 25-35%, стоит также подумать о более мощном процессоре.
Для памяти это следующие счетчики.
■ Обмен страниц в секунду — определяет количество страниц, считываемых или записываемых на диск в течение одной секунды. Как правило, страницы записываются на диск в том случае, если оперативная память компьютера исчерпана и системе приходится использовать файл подкачки. Иными словами, чем меньше показания данного счетчика, тем лучше. В случае большого объема обмена страниц (имеется в виду обмен страницами в течение всего сеанса работы пользователя, а не временный обмен, который может быть ассоциирован записью информации на диск (а следовательно, не отображает реальную картину загруженности памяти)) рекомендуется купить дополнительную планку оперативной памяти.
■ Ошибок страницы в секунду — указывает количество ошибок доступа к оперативной памяти, возникающих при отсутствии в оперативной памяти необходимых данных. Как правило, после выявления ошибки системе приходится обращаться к содержимому жесткого диска за получением необходимой информации и повторного помещения ее в память, что занимает большое количество времени (сравнительно). При показаниях данного счетчика, превышающих значение 5, рекомендуется купить дополнительные планки оперативной памяти.
■ Доступно байт — определяет количество свободной в данный момент виртуальной памяти. Если показания этого счетчика постоянно колеблются в пределах 10-20 Мбайт, рекомендуется купить дополнительные планки оперативной памяти.
Для физического диска это следующие счетчики.
■ % активности диска — определяет процент времени, которое жесткий диск тратит на удовлетворение запросов на чтение/запись данных. Если показания данного счетчика долгое время колеблются в районе 80-100%, то необходимо подумать над покупкой более быстрого жесткого диска или дополнительного объема оперативной памяти.
■ Текущая длина очереди диска — указывает количество запросов на выполнение чтение/запись на диск, ожидающих своего выполнения в очереди. Показания счетчика, отображающие больше двух запросов в очереди, уже считаются поводом покупки дополнительной оперативной памяти или более быстрого жесткого диска.
Для системы это следующий счетчик.
Длина очереди процессора — определяет количество процессов, ожидающих своего выполнения в очереди процессов. Показания счетчика, отображающие больше двух процессов, уже считаются поводом покупки более производительного процессора.
ПРИМЕЧАНИЕ
Названия счетчиков, а также описания их работы на разных компьютерах могут отличаться. Это связано с тем, что сведения о названиях счетчиков и их описания хранятся не в файле библиотеки, а непосредственно в реестре. Для их хранения применяются два параметра REG_MULTI_SZ-типа ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\019 (для англоязычной версии операционной системы используется конечный подраздел 009). Данная ветвь реестра содержит два параметра — Counter и Help. Первый из них определяет названия счетчиков, а второй — их описание.
Для примера загрузим в консоль следующие счетчики: % времени прерываний и Длина очереди процессора для процессора, Ошибок страниц в секунду для памяти, % активности дисков и Текущая длина очереди диска для физического диска. Чтобы загрузить счетчик, необходимо выделить его и нажать кнопку Добавить. После этого счетчик загрузится, но диалог Добавить счетчики закрыт не будет. После того, как вы добавите все необходимые счетчики, просто нажмите кнопку Закрыть, чтобы перейти к окну консоли.
Изменение вида системного монитора
После того как вы нажмете кнопку Закрыть в диалоге Добавить счетчики, перед вами предстанет консоль Производительность, в которую будут загружены все указанные вами счетчики. При этом по умолчанию будет использоваться способ отображения показаний счетчика в виде графика (рис. 11.3).
Рис. 11.3. Способ отображения показаний счетчиков в виде графика
При просмотре небольшого количества счетчиков этот способ отображения наиболее оптимален. Заметьте, что под графиком отображаются поля Последний, Средний, Минимум, Максимум и Длительность, в которых приведены общие показания выделенного в данный момент счетчика. Но при просмотре показаний большого количества счетчиков, да еще и с огромным разбросом по шкале графика, слежение за показаниями может быть затруднительно. Поэтому существует возможность применения гистограммы или отчета показаний счетчиков вместо графика. Для изменения вида показаний счетчиков используются три кнопки панели инструментов системного монитора, представленные в табл. 11.1.
Таблица 11.1. Кнопки изменения вида показаний счетчиков
Существует также возможность изменения цвета, которым отображается конкретный счетчик. Для этого необходимо в контекстном меню данного счетчика выбрать команду Свойства. После этого будет открыто диалоговое окно Свойства: Системный монитор на вкладке Данные. Вкладка содержит список Цвет, с помощью которого изменяется цвет отображения данного счетчика.
Еще одной интересной вкладкой диалога Свойства: Системный монитор является вкладка Источник, с помощью которой можно определить источник показаний счетчиков, отображаемых системным монитором. По умолчанию используются текущие показания счетчиков, но существует возможность загрузки в системный монитор показаний, описанных в файле журнала или базе данных. Вероятно, пока что данные возможности системного монитора вам будут непонятны, поэтому рассматривать их не станем. Вместо этого мы закончим рассказ об ActiveX-объекте Системный монитор и перейдем к рассмотрению оснастки Журналы и оповещения производительности, ведь именно с ее помощью создаются файлы журналов показаний счетчиков или базы данных SQL, которые и используются на вкладке Источник диалога Свойства: Системный монитор как возможные источники показаний счетчиков для работы системного монитора.
Журналы и оповещения производительности
Несмотря на то, что просмотр счетчиков в реальном времени является хорошим способом определения производительности компьютера, он имеет ряд недостатков. Главным из них является то, что при просмотре счетчиков пользователь, как правило, больше ничего на компьютере не делает (не играет, не печатает, то есть компьютер просто простаивает), поэтому некоторые из счетчиков в этот момент могут быть просто неактуальны. Решить эту проблему можно с помощью оснастки Журналы и оповещения производительности. Благодаря этой оснастке можно настроить такие функции компьютера, как возможность ведения журналов счетчиков, журналов трассировки и оповещения о каком-либо событии.
Журналы счетчиков
Именно с помощью журналов счетчиков решается проблема просмотра счетчиков в реальном времени. С помощью данных журналов можно определить время, начиная с которого компьютер будет записывать показания счетчиков в журнал, а также время, после которого запись в журнал будет прекращена. После этого можно продолжить повседневную работу с компьютером, а уже в конце дня просто загрузить созданный журнал счетчиков в системный монитор, чтобы просмотреть их показания.
По умолчанию существует уже созданный журнал счетчиков, называемый Обзор системы. Это пример журнала, на основе которого можно определить саму суть создания журнала счетчиков. Его можно запустить или остановить, то есть данный журнал является полнофункциональным, но его изменение с помощью консоли Производительность запрещено, поэтому ниже будут рассмотрены некоторые параметры реестра, с помощью которых можно отредактировать данный журнал.
Для примера можно создать свой собственный журнал счетчиков.
ПРИМЕЧАНИЕ
Информация обо всех журналах счетчиков хранится в реестре. Для этого предназначена ветвь реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysmonLog\Log Queries. Она принадлежит службе Журналы и оповещения производительности, запускаемой в качестве сетевой службы. Другими словами, если данная служба будет остановлена, то нельзя будет работать с журналами счетчиков. Каждый журнал счетчиков создает в приведенной ветви реестра свой собственный раздел, имеющий название в формате GUID-номера. Например, для журнала счетчиков Обзор системы используется раздел {123a660c-c5ce469a-ac149-7c1ee9c1e9376c}.
Для создания нового журнала необходимо в контекстном меню элемента Журналы счетчиков выбрать команду Новые параметры журнала. После этого перед вами отобразится диалоговое окно для ввода имени журнала, а затем появится окно параметров журнала, изображенное на рис. 11.4.
С помощью вкладки Общие можно добавить счетчики, показания которых будут заноситься в журнал производительности (кнопка Добавить счетчики), определить интервал времени, с которым показания счетчиков будут сниматься и заноситься в журнал (область Снимать показания каждые:), а также указать учетную запись пользователя, от имени которого будет запускаться данный журнал (поле От имени). Работа с диалогом, отображаемым после нажатия кнопки Добавить счетчики, ничем не отличается от работы с уже рассмотренным диалогом Добавить счетчики. Для добавления счетчиков можно также воспользоваться кнопкой Добавить объекты. В этом случае будут добавлены все счетчики какого-либо объекта. Стоит также взглянуть на поле Текущий файл журнала. На данной вкладке его запрещено редактировать, хотя на других вкладках можно будет отредактировать как путь к журналу, так и его имя. Тем не менее благодаря реестру существует еще одна интересная возможность настройки создания журналов — определение пути к папке, в которую будут помещаться журналы счетчиков по умолчанию. Если вам для всех создаваемых журналов приходится определять другой каталог хранения (по умолчанию для хранения журналов счетчиков используется системный диск), то предлагаю воспользоваться параметром строкового типа DefaultLogFileFolder, расположенным в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysmonLog.
Рис. 11.4. Параметры создания нового журнала счетчиков
На вкладке Файлы журнала (пока вы не укажете хотя бы один счетчик для снятия показаний, вам будет запрещено переходить на другие вкладки диалога параметров) можно настроить сам журнал счетчиков. Главным образом можно настроить его имя и каталог для хранения (в диалоге, вызываемом после нажатия кнопки Настроить), а также определить индекс, добавляемый к создаваемым файлам (флажок Имена файлов оканчиваются на). На данной вкладке можно также определить тип создаваемого журнала. Возможны следующие типы.
■ Двоичный файл — используется по умолчанию и является оптимальным способом создания файлов журналов, если их необходимо просматривать только в системном мониторе.
■ Двоичный циклический файл — отличается от предыдущего лишь тем, что при достижении конца файла журнала его содержимое будет перезаписываться заново.
■ Текстовый файл — существует два вида текстовых файлов: разделитель — запятая и разделитель — табуляция. Различия между ними описаны в самих названи
ях файлов. Плюсом текстовых файлов является возможность просмотра их содержимого с помощью таких программ, как Microsoft Excel или даже Блокнот. Минусом же является меньшая скорость обработки данных при просмотре содержимого файлов журналов.
■ База данных SQL — позволяет заносить показания счетчиков в общую базу данных SQL.
На вкладке Расписание можно задать способ запуска и остановки слежения за показаниями счетчиков, а также команду, которая будет выполняться при остановке снятия показаний счетчиков. При этом можно указать время запуска и остановки либо указать запуск и остановку счетчиков вручную. Если будет выбран режим Вручную, то для запуска и остановки снятия показаний счетчиков необходимо будет воспользоваться контекстным меню созданного вами журнала счетчиков, выбрав, соответственно, команду Запуск или Остановка (не самого файла журнала счетчиков, а созданного элемента журнала счетчиков в консоли Производительность).
СОВЕТ
Следует всегда внимательно относиться к возможности запуска различных программ после выполнения конкретных действий. Особенно в том случае, если программа будет запускаться от имени администратора. По крайней мере, запускаемая программа всегда должна находиться в каталоге, изменение содержимого которого запрещено пользователям системы, иначе ничто им не помешает заменить файл запускаемой программы любым другим, реализовав тем самым метод взлома системы через посредника.
ПРИМЕЧАНИЕ
Создать журнал счетчиков можно и с помощью командной строки. Для этого применяется команда logman create counter. На страницах книги работа с этой командой описана не будет, тем не менее она не представляет трудности, если вы знаете, как создаются журналы счетчиков с помощью консоли Производительность. Для просмотра параметров данной команды введите в командной строке команду logman create counter /?.
После того как вы создадите журнал счетчиков, он отобразится в том же списке, что и журнал Обзор системы. При этом значок напротив журнала счетчиков будет красного цвета, это говорит о том, что в данный момент журнал остановлен. После запуска журнала счетчиков значок напротив него станет зеленого цвета. Но допустим, что у нас уже есть файл показаний счетчика, то есть наш журнал счетчиков был запущен и остановлен (файл показаний счетчиков должен содержать больше двух показаний, иначе его нельзя будет использовать, то есть по умолчанию показания должны сниматься как минимум 45 секунд). Что же теперь делать с созданным файлом показаний счетчиков? Во-первых, можно указать путь к нему на вкладке Источник рассмотренного диалога Свойства: Системный монитор. А можно воспользоваться командой Сохранить параметры как из контекстного меню созданного журнала счетчиков. С помощью данной команды можно будет создать HTML-файл, хранящий ActiveX-объект Системный монитор. Запуск этого HTML-файла приведет к появлению уже знакомого окна Системный монитор, которое по умолчанию будет использовать для своей работы показания счетчиков, хранящиеся в созданном с помощью данного журнала счетчиков файле показаний.
Теперь рассмотрим параметры реестра, которые используются для хранения параметров журналов счетчиков. Как было сказано выше, все журналы счетчиков имеют свой собственный раздел в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysmonLog\Log Queries. Все разделы данной ветви реестра представляют собой CLSID-номера, генерируемые системой при создании журналов счетчиков. Каждый раздел, соответствующий журналу счетчиков, может содержать следующие параметры, которые можно редактировать даже для журнала счетчиков Обзор системы, несмотря на то, что изменение параметров этого журнала с помощью оснастки невозможно.
■ Collection Name — параметр строкового типа, определяет имя журнала счетчиков. Значение переопределяется параметром строкового типа Collection Name Indirect.
■ Counter List — этот параметр REG_MULTI_SZ-типа определяет названия счетчиков, показания которых будут считываться.
■ Create New File — если значение данного параметра DWORD-типа равно 1, то при следующем запуске журнала счетчиков будет создан новый файл (а не переписан уже существующий).
■ Current Log File Name — этот параметр строкового типа определяет путь к файлу (и его имя), в который будут записываться показания счетчиков. При этом значение состоит из значений двух других параметров строкового типа — Log File Folder и Log File Base Name. Первый из них определяет путь к каталогу, содержащему файл счетчиков, а второй параметр определяет название файла.
■ Log File Max Size — параметр DWORD-типа, определяет максимальный размер создаваемого файла.
Журналы трассировки
Журналы трассировки являются разновидностью журналов счетчиков (более того, они описываются в той же ветви реестра), собирающей наиболее полные сведения о тех или иных объектах системы. Применять журналы трассировки, как правило, следует только при тестировании того или иного объекта системы, так как их ведение требует от компьютера большого объема системных ресурсов.
По умолчанию не существует ни одного примера создания журнала трассировки, поэтому попробуем создать свой собственный журнал. Для этого необходимо из контекстного меню элемента Журнал трассировки выбрать команду Новые параметры журнала. После этого система попросит ввести имя создаваемого журнала трассировки (так как журналы трассировки хранятся в той же ветви реестра, что и журналы счетчиков, запрещено давать новым журналам трассировки имена, уже используемые журналами счетчиков). После ввода имени перед вами отобразится диалоговое окно параметров нового журнала трассировки. Скажем сразу, что данный диалог включает в себя вкладки Файлы журнала и Расписание, содержимое которых аналогично содержимому данных вкладок для создания журнала счетчиков, поэтому рассмотрены они не будут.
ПРИМЕЧАНИЕ
Если при создании нового журнала счетчиков на вкладке Расписание по умолчанию указано, что данный журнал запускается вручную, то после создании журнала трассировки он будет запускаться ежедневно в то время, когда вы его создали.
Диалог параметров нового журнала трассировки содержит вкладку Общие. С ее помощью можно указать поставщиков возможности трассировки (чем-то напоминают несколько совмещенных вместе объектов журналов счетчиков). При этом существует возможность использования как системных поставщиков, так и поставщиков, устанавливаемых вместе с дополнительными службами. Чтобы выбрать системного поставщика, нужно установить переключатель в положение События, протоколируемые системным поставщиком. После этого станет активным ряд флажков, с помощью которых можно указать те из событий, протоколирование которых будет выполняться.
ПРИМЕЧАНИЕ
Как правило, журналы трассировки могут запускаться только от имени администратора, поэтому на вкладке Общие необходимо указать запуск от имени администратора и пароль для запуска.
В диалоге параметров журнала трассировки присутствует дополнительная вкладка, которая называется Дополнительно. С ее помощью можно определить размер буферов трассировки и их количество. Все дело в том, что данные трассировки сначала записываются в буфер трассировки, а потом уже, когда буфер будет заполнен, — в файл трассировки.
Но чем же, с точки зрения реестра, отличаются журналы трассировки от журналов счетчиков? Как оказалось, они отличаются значением всего одного параметра. Если значение DWORВ-параметра Log Type равно 0, то данный журнал является журналом счетчиков, а если значение параметра Log Type равно 1, то журналом трассировки. Например, если значение параметра Log Type ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysmonLog\Log Queries\{123a660c-c5ce-469a-ad49-7dee9de9376c} будет равно 1, то стандартный журнал Обзор системы станет журналом трассировки, а не журналом счетчиков.
ПРИМЕЧАНИЕ
Если значение параметра Log Туре равно 0xffffffff, то журнал будет скрыт.
Для журналов трассировки могут применяться следующие дополнительные параметры DWORD-типа.
■ Trace Buffer Flush Interval — определяет интервал времени в секундах, с которым будет выполняться сбрасывание содержимого буферов в файл трассировки.
■ Trace Buffer Min Count — указывает минимальное количество буферов трассировки, которое будет использоваться в любом случае.
■ Trace Buffer Max Count — определяет максимальное количество буферов трассировки. Если количества буферов, определенного в параметре Trace Buffer Min Count, не хватает для буферизации данных, то будут созданы дополнительные буферы (общее количество буферов не должно быть больше, чем значение параметра Trace Buffer Max Count).
■ Trace Buffer Size— указывает размер в килобайтах каждого буфера трассировки.
Оповещения
Оповещения — это еще один механизм, работающий на основе показаний счетчиков. С его помощью можно определить счетчики, показания которых будут сниматься при работе оповещения, а также определить пороги, преодоление которых счетчиками вызовет какое-либо действие.
По умолчанию не существует ни одного оповещения, поэтому, чтобы создать новое оповещение, необходимо воспользоваться контекстным меню элемента Оповещения. После выбора команды Новые параметры оповещений консоль управления Microsoft попросит ввести имя нового оповещения, после чего перед вами отобразится диалоговое окно настройки параметров оповещения.
Окно содержит знакомые вкладки Общие, Действие и Расписание. На вкладке Общие можно указать счетчики, показания которых будут считываться, а также порог, после преодоления которого произойдут события, указанные на вкладке Действия. На вкладке Действия можно определить, будет ли происходить запись в журнал приложений (оснастка Просмотр событий) при возникновении оповещения, будет ли запускаться один из журналов трассировки или счетчиков, а также определить команду, которая будет выполняться при возникновении оповещения. На вкладке Расписание можно задать время, начиная с которого будет запускаться данное оповещение. По умолчанию оповещение будет запускаться сразу же после своего создания.
Настройки оповещений также находятся в разделах ветви системного реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysmonLog\Log Queries. При этом значение DWORD-параметра Log Type, равное 2, как раз и определяет, что данная ветвь реестра описывает оповещение.
Управляющий элемент WMI
Оснастка Управляющий элемент WMI включает в себя настройки инструментария управления Windows (WMI), с помощью которого можно удаленно или локально управлять различными настройками операционной системы Windows. WMI реализовано на основе протокола WBEM (протокол управления предприятием на основе веб-технологий) и включает в себя CIM-совместимую базу данных (CIMOM), содержащую сведения об объектах системы, а также диспетчер CIM, с помощью которого реализованы функции работы с поставщиками WMI. Поставщики WMI являются посредниками между WMI и компонентами компьютера. Именно с их помощью реализуются такие возможности, как считывание, оповещение о событии и изменение данных состояния компонентов компьютера. Сама же возможность WMI может применяться как в программировании под Windows с помощью WinAPI, так и при создании сценариев сервера сценариев Windows. Возможности WMI также используются в компонентах Свойства системы, Сведения о системе и для формирования вкладки Зависимости, находящейся в окне диалога свойств конкретной службы в оснастке Службы.
ПРИМЕЧАНИЕ
Именно база данных CIMOM содержит всю информацию о компонентах компьютера, установленных на компьютере программах и многом другом. Информация в базе CIMOM компьютера обновляется при каждом входе в систему или подключении к WMI.
Свойства WMI
Для работы оснастки Управляющий элемент WMI необходимо, чтобы в системе был зарегистрирован GUID-номер {5C659257-E236-11D2-8899-00104B2AFB46}. Именно этот GUID-номер и идентифицирует настройки оснастки Управляющий элемент WMI. Эта оснастка входит в состав консоли Инфраструктура управления WMI, открыть которую можно с помощью команды wmimgmt.msc. После ее ввода перед вами отобразится пустое окно консоли, содержащее единственный элемент дерева консоли — Элемент управления WMI (локальный). Контекстное меню данного элемента включает в себя две основные команды: Подключение к другому компьютеру и Свойства. Первая предназначена для просмотра WMI удаленного компьютера, а вторая позволяет просмотреть настройки WMI локального компьютера. После выбора команды Свойства перед вами отобразится диалоговое окно, подобное приведенному на рис. 11.5.
На вкладке Общие диалога свойств отображается общая информация о компьютере, к WMI которого вы подключились. С помощью данной вкладки можно изменить учетную запись, от имени которой вы подключились. Для этого предназначена кнопка Изменить. На вкладке Ведение журнала можно определить путь к журналу событий WMI, его размер, а также сведения, которые будут помещаться в этот журнал. На вкладке Архивация или восстановление можно вручную выполнить такие операции, как архивация или восстановление CIM-совместимой базы данных WMI. На вкладке Дополнительно можно определить пространство имен WMI, используемое по умолчанию при разработке сценариев (если конкретное пространство имен указано не было). На вкладке Безопасность можно определить права доступа для различных пространств имен WMI. По умолчанию администраторы имеют полный доступ ко всему пространству имен, а остальным группам пользователей разрешен только доступ на выполнение методов пространства имен.
Рис. 11.5. Свойства WMI
Если читатель знаком с программированием на языке C++, то ему известен термин Пространство имен. Это логическое объединение различных функций, переменных, классов и т.д., направленное на улучшение структурированности кода и исключение конфликтов между функциями, имеющими одинаковые названия. В контексте WMI с помощью пространства имен реализована система безопасности. Другими словами, если пользователю запрещен доступ к одному из пространств имен, то он не сможет использовать функции, которые были описаны в этом пространстве.
Настройки WMI в реестре
В предыдущем разделе вкратце были рассмотрены настройки WMI, которые можно изменить с помощью диалога Свойства: Элемент управления WMI (локальный).
Теперь же рассмотрим настройки WMI, доступ к которым предоставляет реестр Windows XP. Все эти настройки содержатся в ветви HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM в следующих параметрах строкового типа.
■ Build — определяет номер версии WMI, установленной в системе. По умолчанию в Windows XP используется версия 2600.0000.
■ Installation Directory — указывает путь к каталогу, хранящему файлы WMI. В этом каталоге расположены все библиотеки, необходимые для работы WMI, файлы журналов и многое другое.
■ MOF Self-Install Directory — определяет путь к каталогу, в который будут помещаться файлы с расширением MOF, предназначенные для автоматического добавления новых поставщиков WMI, а также функций и методов.
Кроме параметров, данная ветвь реестра включает в себя вложенный раздел CIMOM, содержащий сведения о CIM-совместимой базе данных WMI. Этот раздел хранит следующие параметры.
■ Autorecover MOFs —данный параметр REG_MULTI_SZ-типа включает в себя список всех файлов с расширением MOF, используемых при инициализации и восстановлении базы данных WMI. Содержимое этого файла также определяет порядок, в котором компилировались файлы MOF при установке WMI.
■ Backup Interval Threshold — параметр строкового типа, определяет промежуток времени в минутах, по истечении которого будет выполняться резервное копирование базы данных WMI. По умолчанию в реестре не существует.
■ EnableEvents — этот параметр строкового типа определяет, будет ли использоваться подсистема событий WMI. Если значение равно 1, то будет. Как правило, значение параметра равно 0.
■ EnableStartupHeapPreallocation — параметр DWORD-типа, определяет, будет ли сразу же при запуске WMI выделяться куча (часть оперативной памяти, используемая для хранения объектов). Если значение равно 1, то при запуске WMI будет заранее выделяться куча, размер которой определен в параметре LastStartupHeapPreallocation. По умолчанию эти параметры не существуют.
■ EnablePrivateObjectHeap — этот параметр DWORD-типа определяет, будет ли использоваться куча для хранения объектов от поставщиков. По умолчанию не существует.
■ EnableObjectValidation — если значение этого параметра DWORD-типа будет равно 1, то проверка целостности объектов от поставщиков будет выполняться. По умолчанию в реестре не существует.
■ High Threshold On Client Objects (B) — этот параметр DWORD-типа определяет верхнее пороговое значение очереди объектов от поставщиков, достижение которого приводит к прекращению приема объектов от поставщиков (в этом случае WMI возвращает поставщикам код WBEM_E_OUT_OF_MEMORY). По умолчанию параметр не существует.
■ High Threshold On Events (B) — значение этого параметра DWORD-типа аналогично значению предыдущего, но в этом случае определяется верхнее пороговое значение очереди событий (а не объектов) от поставщиков.
■ Log File Max Size — определяет максимальный размер файлов журналов, создаваемых службами WMI.
■ Logging — этот параметр строкового типа определяет уровень протоколирования ошибок и может принимать следующие значения:
• 0 — отключить протоколирование;
• 1 — краткое протоколирование ошибок;
• 2 — полное протоколирование ошибок.
■ Logging Directory — этот параметр строкового типа содержит путь к каталогу, в котором находятся файлы системных журналов WMI. Именно значение этого параметра и редактируется на вкладке Ведение журнала.
■ Low Threshold On Client Objects (B) — параметр DWORD-типа, определяет нижнее пороговое значение очереди объектов от поставщиков, достижение которого приводит к замедлению скорости создания объектов. По умолчанию в реестре не существует.
■ Low Threshold On Events (B) — этот параметр DWORD-типа определяет нижнее пороговое значение очереди событий от поставщиков, достижение которого приводит к замедлению скорости создания событий.
■ Max DB Size — параметр строкового типа, определяет максимальный размер базы данных WMI. По умолчанию не существует.
■ Max Wait On Events (ms) — этот параметр строкового типа указывает время в миллисекундах, в течение которого событие может находиться в очереди. Если по истечении этого времени событие все еще находится в очереди, то оно будет автоматически удалено.
■ Max Wait On Client Objects (ms) — параметр строкового типа, указывает время в миллисекундах, в течение которого объект может находиться в очереди. Если по истечении этого времени объект все еще находится в очереди, то он будет автоматически удален. По умолчанию в реестре не существует.
■ Repository Directory — этот параметр строкового типа определяет путь к каталогу, используемому службой WMI для хранения архивов СIМ-совместимой базы данных. Они используются при восстановлении базы данных.
■ Working Directory — параметр строкового типа, определяет путь к рабочему каталогу WMI. По умолчанию используется путь %systemroot%\system32\wbem.
В реестре также существует ветвь HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting. Значения данной ветви определяют настройки взаимодействия WMI и сервера сценариев Windows. Например, ветвь может содержать следующие параметры.
■ Default Namespace — этот параметр строкового типа определяет пространство имен, используемое по умолчанию (если пространство имен не указано явно). Чаще всего значение равно root\cimv2.
■ Enable for ASP — если значение данного параметра DWORD-типа равно 1, то будет разрешено использование сценариев WMI для ASP.
■ Default Impersonation Level — этот параметр DWORD-типа определяет используемый по умолчанию (если уровень не указан в сценарии) уровень прав безопасности. По умолчанию значение равно 3.
Доступ к WMI с помощью сервера сценариев
Полное понимание WMI невозможно без знания тех возможностей, которые она предоставляет администратору. Поэтому рассмотрим сейчас некоторые примеры написания сценариев сервера сценариев Windows с использованием возможностей WMI. Раздел не описывает работу с сервером сценариев — предполагается, что вы уже знаете, что это такое и как писать простые сценарии на языках VBScript или JScript. Здесь будет дано несколько примеров сценариев, на основе которых можно представить, какие возможности открываются перед администратором при использовании WMI, а также будет дана ссылка на один интересный каталог файловой системы Windows, содержащий список всех функций, реализованных в пространствах имен, и краткое описание этих функций.
Итак, сервер сценариев Windows является объектно-ориентированным языком. Иными словами, при написании сценариев в них можно подключать различные объекты (хранящие описания методов, реализующих различные возможности работы с операционной системой), а также моникеры (СОМ-механизм для обеспечения привязки к СОМ-объекту, например к базе данных WMI). Сценарии сервера сценариев можно писать на языке VBScript либо JScript. В данном случае для рассмотрения примеров будет использоваться язык VBScript.
Есть два способа запуска сценариев сервера сценариев Windows — либо с помощью двойного щелчка кнопкой мыши на файле (или с помощью команды wscript.exe), либо с помощью команды cscript.exe. Программа cscript.exe предназначена для работы со сценарием из командной строки, и ее плюсом является возможность указания параметров работы сценария (если он обрабатывает параметры). Приведенные ниже примеры, как правило, используют параметры командной строки, поэтому для их применения лучше обратиться к программе cscript.exe.
Включение и выключение SystemRestore для отдельных дисков
Рассмотрим первый пример тех возможностей, которые предоставляет администратору WMI. В этом примере воспользуемся классом SystemRestore, описанным в пространстве имен root /default для реализации возможности отключения или включения восстановления системы на отдельных дисках с помощью сервера сценариев Windows. Пример, кроме доступа к WMI, будет содержать описание реализации основных возможностей объектов сервера сценариев, а также подробное объяснение, для чего записывается та или иная строка сценария.
'Для работы данного сценария используются возможности объектов Windows
'(работа с реестром и файловой системой), поэтому перед обращением к
'этим возможностям нужно объявить в сценарии объекты, в которых они описаны
'Сейчас мы объявляем объект для работы с файловой системой Windows, он
'нам понадобится для возможности записи в файл сведений об отключении
'SystemRestore.
set objFS = CreateObject("Scripting.FileSystemObject")
'После объявления объекта необходимо открыть текстовый файл
'(например, файл sr_log.txt, расположенный в каталоге d:\)
'для записи (если файл не сущестует, то он будет автоматически создан).
'В этот файл будет записываться информация о работе сценария.
set objTextFile = objFS.OpenTextFile("d:\sr_log.txt", 8, True)
'Теперь мы объявляем объект для работы с реестром Windows.
'Он нам понадобится для доступа к параметру, указывающему, включена ли
'в данный момент возможность SystemRestore
set objREG = WScript.CreateObject("Wscript.Shell")
Теперь мы объявляем объект, с помощью которого можно обработать
'передаваемые в сценарий параметры командной строки. Наш сценарий будет
'использовать параметры командной строки для определения того, что же
'ему нужно делать. При этом полная строка запуска нашего сценария
'будет выглядеть так: cscript «путь к файлу сценария и его имя» «значок
'диска» «если этот параметр равен Y, то SystemRestore на диске будет
включена, если же значение этого параметра равно N, то отключена».
'Если параметры не заданы (например, сценарий запускается двойным щелчком
'на его значке), то будут применяться параметры По умолчанию: будет
'отключаться возможность SystemRestore на диске C:\.
Set Args = wscript.Arguments
Теперь мы проверяем, использовали ли при запуске сценария параметр
'значка диска (первую опцию). Если не использовали, то будем работать
'с диском C:\.
If Args.Count() > 0 Then
Drive = Args.item(0)
Else
Drive = "c:\"
End If
'Теперь мы проверяем использование при запуске сценария второго параметра
If Args.Count() > 1 Then
StopSR = Args.item(1)
Else
StopSR = "N"
End If
'При каждом запуске даннного сценария мы будем вести журнал его работы.
'Каждый журнал, как правило, начинается с даты и времени, когда сценарий
'был запущен – именно эту информацию мы и добавляем в открытый ранее
'файл. Для этого мы используем метод Write, чтобы сервер сценариев
'не переходил на следующую строку файла журнала после занесения в него
'даты и времени.
objTextFile.Write Date() & " в " & Time()
'Сейчас мы вызываем главную функцию программы, описанную ниже в сценарии.
'Главный код программы был реализован в виде функции, чтобы показать
'читателю большинство возможностей сервера сценариев Windows.
call sronoff()
'А вот и главная функция программы (которая будет называться sronoff).
'Именно эта функция отключает или включает SystemRestore на определенном
'диске. Реализация частей кода сценария в виде функций позволяет
'использовать его возможности по максимуму. Например, такой подход
'позволяет завершать работу сценария в любое время, независимо от
'оставшегося для обработки кода, или использовать для каждой части
'кода свои методы обработки ошибок.
private sub sronoff()
'Внимание, именно сейчас мы подключаемся к WMI с помощью моникера winmgmts.
'Здесь мы подключаемся к пространству имен root/default локального
'компьютера и объявляем класс SystemRestore этого пространства c имитацией
'прав доступа (impersonate). Если вам запрещен доступ к пространству
'имен root/default, то вы не сможете объявить класс SystemRestore
'Помните, выше мы рассматривали параметры реестра, для определения порогов
'передачи объектов от поставщиков WMI. Именно передачей объектов мы и
'пользуемся в данный момент.
Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore")
'Чуть ниже мы считываем из реестра значение параметра. Особенность
'сценария состоит в том, что он будет выдавать ошибку, если параметра,
'значение которого мы считываем, не существует в реестре. Чтобы сценарий
'не завершался ошибкой, мы подавляем возможность выдачи ошибок.
'Иными словами, приведенная ниже строка говорит серверу сценариев о том,
'что в случае возникновения ошибки он должен дальше обрабатывать сценарий,
'не обращая внимания на возникшую ошибку.
ON ERROR RESUME NEXT
'Именно сейчас мы и работаем с реестром. Мы считываем значение
'параметра DisableSR. Если значение данного параметра равно 1,
'то SystemRestore полностью отключен на всех дисках и наш
'сценарий в любом случае не будет работать со всеми дисками,
'кроме системного.
dasableSR = objREG.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore\DisableSR")
'Если параметр, значение которого мы считываем, не существует в
'реестре, тогда компилятор запишет в специальный объект err
'код ошибки, равный –2147024894 (именно ошибка с этим кодом и возникает
'в том случае, если параметр реестра, к которому мы пытаемся
'получить доступ, в реестре отсутствует) .Если действительно произошла
'ошибка с данным кодом, то SystemRestore на компьютере отключена,
'то есть все попытки включения/отключения дисков, отличных от системного
'(ниже под С:\ понимается системный диск), будут неудачны.
'Ниже в сценарии будет присутствовать еще одно условие, выполняющее те же
'действия, что и это. Работа с объектом для хранения ошибок была описана
'лишь для примера, таккак в сценариях сервера сценариев Windows это
'единственный способ определить, присутствует ли в реестре конкретный
'параметр.
if (err.Number = –2147024894) and (Drive <> "c:\") then
objTextFile.WriteLine " : Параметр DisableSR отсутствует в реестре. Это значит, что SystemRestore отключена и вкладка для ее настройки отсутствует в диалоге Свойства системы"
'Выходим из функции, а поскольку эта функция главная, то завершается
'и работа сценария. Иными словами, дальнейший код сценария
'выполняться не будет, если мы пытаемся включить/отключить несистемный
'диск, если сама возможность SystemRestore отключена.
exit sub
End if
'Под диском C:\ понимается системный диск, поэтому если вашим системным
'диском является не диск С:\, то букву нужно заменить. Особенность
'работы SystemRestore заключается в том, что в случае остановки
'SystemRestore на системном диске SystemRestore автоматически
'останавливается на всех дисках компьютера и параметр DisableSR становится
'равен 1. Именно поэтому запросы на включение/выключение System Restore
'на отличных от системного диска дисках не обрабатываются при значении
'параметра DisableSR, равном 1 (эти запросы работать не будут). При
'этом системный диск запросы обрабатывать может – если SystemRestore на
'нем будет включена, то параметр DisableSR станет равным 0, а значит,
'будет включена и сама возможность автоматического восстановления.
'Именно поэтому ниже системный диск исключается из условного выполнения.
if (dasableSR > 0) and (Drive <> "c:\") then
objTextFile.WriteLine " : Возможность работы SystemRestore на всех дисках была отключена"
exit sub
else
'Для облегчения читаемости приведенного кода вместо условных конструкций
'if … else используются конструкции select case. В остальном дальше
'код довольно простой, поэтому описывать его мы не будем.
select case StopSR
case "N"
If (obj.Disable(Drive)) = 0 Then
objTextFile.WriteLine " : SystemRestore для диска " & Drive & " успешно остановлена"
Else
objTextFile.WriteLine " : Внимание!!! SystemRestore для диска " & Drive & " остановить не удалось"
End If
case "Y"
If (obj.Enable(Drive)) = 0 Then
objTextFile.WriteLine " : SystemRestore для диска " & Drive & " успешно запущена"
Else
objTextFile.WriteLine " : Внимание!!! SystemRestore для диска " & Drive & " запустить не удалось"
End If
End Select
End if
'Считается хорошим тоном закрывать в сценариях текстовые файлы, открытые
'до этого. Именно этим и занимается приведенная ниже строка.
objTextFile.Close
end sub
Вот, в принципе, и все. Приведенный в листинге сценарий очень подробно изложен, поэтому больше он описан не будет. Для запуска данного сценария необходимо иметь права администратора на локальном компьютере, иначе вы не сможете получить доступ к WMI. Если немножко изменить этот сценарий, то можно будет подключиться не к локальному компьютеру, а к любому другому компьютеру сети. Для этого нужно строку
Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/ default:SystemRestore")
заменить строкой
Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\«имякомпьютера»\root\default:SystemRestore")
При этом вместо имени компьютера можно использовать точку. В этом случае вы опять будете подключаться к локальному компьютеру.
Напоследок несколько возможных команд запуска приведенного сценария:
■ cscript d: \sr.vbs — полностью отключить возможность восстановления системы (если диск C: является системным);
■ cscript d:\sr.vbs c:\ Y — полностью включить возможность восстановления системы (если диск C: является системным);
■ cscript d:\sr.vbs D:\ N — отключить SystemRestore только на диске D:.
Создание контрольной точки восстановления
Продолжим рассмотрение темы восстановления системы и опишем код для автоматического создания точки восстановления. На этот раз будет приведена только часть кода, отвечающая за работу WMI, а не весь код сценария, то есть обращение к моникеру winmgmts и работа с классом. Вы самостоятельно можете модифицировать приведенный выше код для того, чтобы он мог, например, автоматически включать работу SystemRestore, если возможность восстановления системы отключена, а потом уже выполнять создание контрольной точки восстановления.
Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/ default:SystemRestore")
'С помощью данной функции и создается точка восстановления.
'Функция имеет три параметра, первый из которых определяет описание
'создаваемой точки восстановления и возвращает код ошибки в случае
'неудачной попытки создания. Нам этот код не нужен,
'но тем не менее его необходимо поместить в любую переменную.
'Если вы будете записывать сведения о создании точки в журнал,
'то данный код может понадобиться.
ErrorSRCode = obj.CreateRestorePoint("Точка восстановления от " & Time(), 0, 100)
Энумерация содержимого ветви реестра
Стандартные методы объекта, предназначенные для доступа к системному реестру (WScript.CreateObject("Wscript.Shell") ), один из которых, позволяющий считывать значения параметров из реестра, был рассмотрен в примере сценария для включения/отключения восстановления системы на логических дисках компьютера, позволяют выполнить базовые операции с реестром.
Но данный объект имеет один очень большой недостаток — с его помощью нельзя перечислить все параметры, расположенные в определенной ветви реестра. Этот недостаток ограничивал возможности применения сценариев сервера сценариев Windows, поэтому просто нельзя не рассказать о новом свойстве инструментария Windows, которое выполняет именно эту операцию.
ПРИМЕЧАНИЕ
Это может понадобиться в том случае, если необходимо значение не конкретного параметра реестра, а всех параметров одной ветви. При этом точно не известно, какие именно параметры могут находиться в данной ветви.
За выполнение перечисления параметров, расположенных в ветви реестра, отвечает метод EnumValues, принадлежащий классу StdRegProv. Данный класс определяет методы для доступа к реестру Windows XP (более функциональный аналог стандартного объекта Windows, рассмотренного выше) и принадлежит к пространству имен Root\Default. Мы не будем создавать целый работоспособный сценарий для описания работы данного метода — лучше создадим отдельную процедуру, которая будет выполнять перечисление параметров указанной ветви реестра, а также проверим ее работу с помощью записи в файл журнала выводимых значений.
set objFS = CreateObject("Scripting.FIleSystemObject")
'Для вывода списка содержащихся в ветви реестра параметров мы будем
'использовать файл. В нашем случае – файл enum_log.txt на диске d:\..
set objTextFile = objFS.CreateTextFile("d:\enum_log.txt", 8, True)
'подключаем объект
Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/Default:StdRegProv")
'Переменная RootKey будет определять корневой раздел ветви, параметры
'которой мы будем перечислять. При этом корневые разделы идентифицируются
'в соответствии с правилами, определеннымивфайле Winreg.h. В файле
'определены следующие корневые разделы: HKEY_CLASSES_ROOT (0x80000000),
'HKEY_CURRENT_USER (0x80000001), HKEY_LOCAL_MACHINE (0x80000002),
'HKEY_USERS (0x80000003), HKEY_CURRENT_CONFIG (0x80000005), HKEY_DYN_DATA
'(0x80000006). В нашем случае будет использоваться корневой раздел
'HKEY_CURRENT_USER.
RootKey = &H80000001
Вызываем процедуру, которая и будет выполнять перечисление параметров. Для
'работы процедуры необходимы три параметра: ветвь реестра, параметры которой
'нужно перечислять (в нашем случае Control Panel\Desktop), объект,
'определяющий текстовый документ, в который будут записываться параметры
'ветви, а также корневой раздел указанной ранее ветви, записанный в нашем
'случае в параметре RootKey. После работы процедуры закрываем открытый
'текстовый файл.
call EnumV("Control Panel\Desktop", objTextFile, RootKey)
objTextFile.Close
Sub EnumV(Path, objTextFile, RootKey)
objTextFile.WriteLine ":::: Ветвь реестра: HKEY_CURRENT_USER\" & Path & vbCrLf
'Выполняем перечисление параметров, расположенных в ветви реестра
'HKEY_CURRENT_USER\Control Panel\Desktop. Для этого используется метод
'EnumValues, для работы которого необходимы следующие параметры:
'– Корневой раздел ветви (в нашем случае параметр RootKey)
'– Остальной путь к ветви реестра (в нашем случае параметр RootKey,
'указываемый при вызове процедуры).
' – Переменная, в которую будут помещаться содержащиеся в ветви реестра
'параметры. В нашем случае назовем эту переменную Names
' – Переменная, в которую будет помещаться идентификатор типа параметра.
'В нашем случае назовем ее Types.
obj.EnumValues RootKey, Path, Names, Types
'Проверяем, существуют ли в указанной ветви реестра параметры. Во-первых,
'проверяется равенство нулю переменной Names, содержащей названия
'параметров. А во-вторых, проверяем на равенство нулю переменную Types.
'Переменные нужно проверять именно на равенство нулю, так как ноль
'возвращается методом EnumValues в случае ошибки.
if not IsNull(Names) and not IsNull(Types) Then
'Выполняем цикл, количество итераций которого указывается границами
'переменной types (количеством элементов в переменной types, так как это
'массив). Иными словами, выполняем цикл столько раз, сколько переменных было
'найдено в указанной ветви реестра.
for i = lbound(types) to ubound(types)
'При этом мы будем выполнять запись в текстовый файл в зависимости
'от типа переменной, указанного в переменной types. Для этого будем
'использовать выражение select case из-за особенности метода EnumValues.
'Особенностью этого метода является способ указания типа найденной
'переменной. Для этого используется массив types (в нашем случае),
'в который помещаются идентификаторы типа переменной, определенные
'в файле Winreg.h. Возможны следующие идентификаторы:
'1 – определяет переменную строкового типа;
'2 – определяет переменную расширенного строкового типа;
'3 – определяет переменную REG_BINARY-типа;
'4 – определяетпеременную REG_DWORD-типа;
'7 – определяет переменную REG_MULTI_SZ-типа.
select case types(i)
'Проверяем тип параметра и в зависимости от этого типа используем
'разные методы для получения значения параметра. Все методы для
'получения значений параметров реестра также описаны в классе
'StdRegProv. Мы используем следующие методы.
'GetStringValue – получение значения строкового типа.
'GetExpandedStringValue – получение значения расширенного строкового типа.
'GetBinaryValue – получение значения параметра REG_BINARY-типа.
'GetDWordValue – получение значения параметра REG_DWORD-типа.
'GetMultiStringValue – получение значения параметра REG_MULTI_SZ-типа.
'Все эти методы используют для своей работы следующие переменные:
'идентификатор корневого раздела ветви реестра, остальной путь к ветви
'реестра, имя параметра (в нашем случае элемент массива names), а также
'название переменной, в которую будет считываться значение данного
'параметра.
case 1
obj.GetStringValue RootKey, path, names(i), value
'После считывания значения параметра проверяем, не произошла ли ошибка
'при считывании (как обычно, значение нуль в переменной). Если ошибки нет,
'то записываем параметр и его значение в текстовый файл. Аналогично
'выполняется работа и с другими типами параметров, поэтому их мы описывать
'не будем.
If isnull(names(i)) or not isnull(value) then
objTextFile.WriteLine names(i) & " = REG_SZ: " & value
end if
case 2
obj.GetExpandedStringValue RootKey, path, names(i), value
if not isnull(names(i)) or not isnull(value) then
objTextFile.WriteLine names(i) & " = REG_EXPAND_SZ: " & value
end if
case 3
obj.GetBinaryValue RootKey, path, names(i), value
for j = lbound(value) to ubound(value)
value(j) = hex(cint(value(j)))
next
if not isnull(names(i)) or not isnull(value) then
objTextFile.WriteLine names(i) &" = REG_BINARY : "& _
join(value, ",")
end if
case 4
obj.GetDWordValue RootKey, path, names(i), value
if not isnull(names(i)) or value then
objTextFile.WriteLine names(i) & " = REG_DWORD : " & _
hex(value)
end if
case 7
obj.GetMultiStringValue RootKey, path, names(i), value
for j = lbound(value) to ubound(value)
value(j) = value(j)
next
if not isnull(names(i)) or not isnull(value) then
objTextFile.WriteLine names(i) &" = REG_MULTI_SZ : "& _
join(value, ",")
end if
end select
next
end if
End Sub
При написании сценария был использован не только метод EnumValues, но и другие методы класса StdRegProv. Это было необходимо для занесения в текстовый файл значений параметров, найденных в данной ветви реестра. Но это не все методы, описанные в классе StdRegProv. И поскольку большую часть книги все-таки составляют описания параметров реестра, хотя бы вкратце рассмотрим другие методы данного класса. Класс StdRegProv содержит следующие методы.
■ CreateKey — создает раздел в ветви реестра. Для его вызова необходимы следующие два параметра: идентификатор корневого раздела ветви реестра (аналог переменной RootKey приведенного сценария), а также остальной путь к ветви реестра, которую нужно создать (в том числе и сам создаваемый раздел реестра).
ПРИМЕЧАНИЕ
Если идентификатор корневого раздела не указан, то будет использоваться стандартный идентификатор &H80000002, говорящий о том, что ветвь находится в корневом разделе HKEY_LOCAL_MACHINE.
■ 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%\SYSTEM32\wbem.
Создание, завершение и просмотр учетной записи процесса
К другим основным возможностям инструментария управления WMI относятся возможности работы с процессами, запущенными на удаленном или локальном компьютере. При этом инструментарий предоставляет возможности не только по запуску или завершению процесса, но и по определению учетной записи, от имени которой запущен определенный процесс. Для работы с процессами используется класс Win32_Process, принадлежащий к пространству имен root\cimv2. Рассмотрим маленький пример по созданию нового процесса с использованием метода Create.
set obj = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\ cimv2:Win32_Process")
obj.Create "C:\WINDOWS\regedit.exe"
Действительно, маленький пример. Теперь подробнее рассмотрим методы класса Win32_Process, направленные на работу с процессами.
■ Create — как уже известно, данный метод используется для создания процесса. При этом после своего выполнения метод возвращает следующие значения (это не все):
• 0 — успешное завершение;
• 2 — пользователь не имеет доступа к запрашиваемым данным;
• 3 — у пользователя нет достаточных привилегий;
• 8 — неизвестная ошибка;
• 9 — пользователь не имеет необходимых привилегий;
• 21 — указан недопустимый параметр.
Несмотря на то, что при вызове данного метода был использован только один параметр, на самом деле для работы с ним нужны четыре параметра. Во-первых, это путь к файлу, который будет вызван (в данном случае применялся только этот параметр). Во-вторых, это путь к каталогу, который должен использовать-ся вызываемым процессом (если он не задан, то будет использоваться каталог, в котором находится запускаемый файл). В-третьих, это строка начальной конфигурации процесса (если она не задана, то будет применяться пустая строка (\"\")). В-четвертых, это переменная, которой будет присвоен идентификатор созданного процесса.
■ Terminate — прекращает процесс и все его дочерние процессы.
■ GetOwner — возвращает учетную запись пользователя, от имени которого был запущен процесс, а также домен, к которому он принадлежит.
■ GetOwnerSid — возвращает SID пользователя, от имени которого был запущен процесс.
■ SetPriority — устанавливает приоритет выполнения определенного процесса.
■ AttachDebugger — вызывает отладчик данного процесса.
ПРИМЕЧАНИЕ
За более детальной информацией обращайтесь к файлу cimwin32.mfl, расположенному в каталоге %systemroot%\SYSTEM32\wbem.
Выключение, перезагрузка компьютера, завершение сеанса пользователя
С помощью инструментария WMI можно выключить удаленный или локальный компьютер, перезагрузить его или завершить сеанс текущего пользователя. Рассмотрим пример завершения сеанса текущего пользователя на локальном компьютере (если у вас есть удаленный компьютер, то при подключении к пространству имен вместо точки необходимо указать его имя). Особенность данного примера состоит в другом способе подключения к классу — с помощью базы данных CIMOM.
'Подключаемся к пространству имен root\cimv2
set objWMIService = GetObject("winmgmts:" & "{impersonationLevel = impersonate}!\\.\root\cimv2")
'Выполняем 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" обнуляет время).
Получение сведений об установленных на компьютере программах
Это еще одна интересная возможность WMI, которой можно воспользоваться. Другими словами, можно удаленно узнавать о том, установлена ли на компьютере какая-либо программа, когда она была установлена, а также просмотреть весь список установленных на компьютере программ. Для примера попробуем создать текстовый файл, содержащий сведения об установленных на компьютере программах, их описании, а также дате установки. В приведенном ниже коде будет использоваться еще одна возможность WMI — получение сведений непосредственно из ее базы данных.
'Объявляем объект для доступа к файловой системе, а потом создаем файл,
'в который будут записываться сведения об установленных на компьютере
'программах (например, файл Program_list.txt в каталоге e:\)
set objFSO = CreateObject("Scripting.FIleSystemObject")
set objTextFile = objFSO.CreateTextFile("e:\Program_list.txt", True)
'Подключаемся к пространству имен root\cimv2
set objWMIService = GetObject("winmgmts:" & "{impersonationLevel = impersonate}!\root\cimv2")
'Выполняем SQL-запрос на получение всех записей из таблицы Win32_Product
'Конечно, можно было бы использовать SQL-запрос для получения только
'отдельных записей или колонок таблицы, но для примера нам такой сложный
'запрос не нужен
set colSoftware = objWMIService.ExecQuery("Select * from Win32_Product")
'Записываем в созданный ранее файл информацию об установленных программах.
'Здесь мы пользуемся циклом, выполняемым для каждого элемента массива
'colSoftware. После окончания записи закрываем файл
for each objSoftware in colSoftware
objTextFile.WriteLine "Программа: " & objSoftware.Caption & " (описание программы:" & objSoftware.Description & ") была установлена: " & objSoftware.InstallDate2
next
objTextFile.Close
После выполнения данного сценария в указанном каталоге появится текстовый файл с описанием установленных программ. При этом, кроме названия программы, ее описания и даты установки, можно получить и другую информацию об установленных программах. Например, можно воспользоваться такими столбцами:
■ objSoftware.IdentifyiungNumber — серийный номер программы;
■ objSoftware.InstallLocation — каталог, в который установлена программа;
■ objSoftware.Name — название программы, как правило, не отличается от objSoftware.Caption;
■ objSoftware.Vendor — производитель программы;
■ objSoftware.Version — версия программы.
Получение сведений о компьютере
С помощью базы данных CIMOM можно также определить конфигурацию операционной системы. Метод определения конфигурации подобен методу определения установленных на компьютере компонентов, поэтому будет рассмотрена лишь часть кода, с помощью которой выполняется обращение к базе данных.
set objWMIService = GetObject("winmgmts:" & "{impersonationLevel = impersonate}!\ root\cimv2")
set colOS = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
for each objOperatingSystem in colOS
objTextFile.WriteLine objOperatingSystem.Name
next
Именно так можно подключиться к базе данных сведений об операционной системе и записать их в файл. Но к каким столбцам таблицы можно получить доступ (кроме используемого в листинге столбца Name, который содержит имя операционной системы и путь к папке Windows)? Ниже перечислены некоторые из таких столбцов (в контексте инструментария управления WMI они называются свойствами).
■ BootDevice — указывает имя тома, из которого загружается операционная система.
■ CodeSet — указывает кодовую страницу, используемую операционной системой (как написано в MFL-файле, кодовая страница содержит таблицу символов, применяемую операционной системой для преобразования строк на различных языках).
■ DataExecutionPrevention_Available — если данное свойство возвращает значение true, то оборудование, установленное на компьютере, поддерживает технологию предотвращения выполнения данных Windows (DEP). Более подробные сведения об этой технологии можно найти в файле cimwin32.mfl.
■ LargeSystemCache — указывает, для каких операций выполняется оптимизация памяти. Если свойство возвращает значение 0, то оптимизация памяти выполняется для повышения производительности работающих программ. Если же возвращается значение 1, то оптимизация памяти выполняется для повышения производительности работы операционной системы.
ПРИМЕЧАНИЕ
Свойство использует для определения метода оптимизации уже рассмотренный ранее параметр реестра LargeSystemCache, расположенный в ветви HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management. Если его значение равно 1, то возвращается значение 1.
■ Version — содержит номер версии операционной системы Windows.
■ ServicePackMajorVersion — основная версия установленного пакета обновлений.
■ ServicePackMinorVersion — дополнительная версия установленного пакета обновлений.
■ Manufacturer — имя производителя операционной системы.
■ WindowsDirectory — каталог Windows.
■ Locale — код локализации (419 для русской версии, 409 для английской).
■ FreePhysicalMemory — свободный объем жесткого диска.
■ FreeVirtualMemory — свободный объем виртуальной памяти.
■ TotalVirtualMemorySize — общий объем виртуальной памяти.
Здесь были рассмотрены лишь 13 свойств класса Win32_OperatingSystem, на самом же деле данный класс имеет 35 свойств. Не имеет смысла описывать остальные свойства, так как все они отлично описаны в стандартном файле cimwin32.mfl, расположенном в каталоге %systemroot%\SYSTEM32\wbem, а автор не брал на себя задачу создания книжного аналога данного файла. Поэтому за дополнительной информацией обращайтесь к файлу cimwin32.mfl (просто поищите в нем строку Win32_OperatingSystem).
Кроме Win32_OperatingSystem, для описания компьютера можно использовать следующие классы.
■ Win32_ComputerSystem — содержит следующие свойства, описывающие работающий компьютер.
• AutomaticResetBootOption — если данное свойство возвращает значение false, то при возникновении аварийной остановки отображается «синий экран смерти» (BSOD). Если же значение равно true, то компьютер автоматически перезагружается.
• BootupState — определяет способ загрузки операционной системы. На пример, если данное свойство возвращает значение Normal Boot, то операционная система была загружена в обычном режиме. Возможны следующие значения: Normal boot, Fail-safe boot, Fail-safe with network boot.
• Name — имя компьютера.
• NumberOfProcessors — возвращает количество процессоров, установленных на данном компьютере.
• Manufacturer — имя компании, собиравшей компьютер.
• Model — модель BIOS компьютера (поддерживает ACPI или нет).
• CurrentTimeZone — идентификатор текущей зоны часового пояса.
• TotalPhysicalMemory — общий объем физической памяти.
ПРИМЕЧАНИЕ
Класс содержит 39 свойств, поэтому за описанием других свойств обращайтесь к файлу cimwin32.mfl, расположенному в каталоге %systemroot%\SYSTEM32\wbem. Просто поищите в нем строку Win32_ComputerSystem.
■ Win32_Processor — определяет один экземпляр процессора (для многопроцессорных систем существует несколько экземпляров данного класса) и содержит следующие свойства:
• Description — описание процессора, установленного на компьютере;
• Architecture — тип процессора, установленного на компьютере;
• CurrentVoltage — возвращает текущее напряжение, используемое процессором (определяется первыми 6 байтами, умноженными на 10);
• L2CacheSize — возвращает размер кэша второго уровня для данного процессора;
• LoadPercentage — возвращает среднюю величину загруженности процессора в течение одной секунды.
ПРИМЕЧАНИЕ
Класс содержит 16 свойств, поэтому за описанием других свойств обращайтесь к файлу cimwin32.mfl, расположенному в каталоге %systemroot%\SYSTEM32\wbem. Просто поищите в нем строку Win32_Processor.
■ Win32_BIOS — указывает атрибуты служб ввода/вывода, установленных на компьютере и содержит следующие свойства:
• Version — описание версии BIOS материнской платы;
• CurrentLanguage — возвращает имя текущего языка BIOS.
ПРИМЕЧАНИЕ
Класс содержит 11 свойств, поэтому за описанием других свойств обращайтесь к файлу cimwin32.mfl, расположенному в каталоге %systemroot%\SYSTEM3\wbem.
■ Win32_OSRecoveryConfiguration — определяет установленные настройки выполнения дампа памяти при аварийной остановке системы и содержит следующие свойства.
• DebugFilePath — возвращает путь к файлу дампа памяти, который будет создаваться при возникновении аварийной остановки.
• MiniDumpDirectory — возвращает каталог, который используется для хранения малых дампов памяти.
• WriteToSystemLog — указывает, будет ли выполняться запись в системный журнал событий при возникновении аварийной остановки. Если возвращает значение false, то не будет.
ПРИМЕЧАНИЕ
Класс содержит 11 свойств, поэтому за описанием других свойств обращайтесь к файлу cimwin32.mfl, расположенному в каталоге %systemroot%\SYSTEM3\wbem.
■ Win32_Process — указывает запущенные в данный момент на удаленном или локальном компьютере процессы и содержит следующие свойства, возвращающие:
• ExecutablePath — пути к исполняемым файлам процессов, запущенных в данный момент;
• MaximumWorkingSetSize — максимальный набор страниц памяти, доступных процессам;
• PageFaults — количество ошибок страниц, которые были допущены в течение всего времени работы процесса;
• PageFileUsage — объем файла подкачки, который используется процессом в данный момент;
• ProcessId — идентификатор процесса;
• QuotaPagedPoolUsage — размер используемой процессом в данный момент части выгружаемого пула;
• CommandLine — командную строку, которая использовалась для запуска данного процесса.
ПРИМЕЧАНИЕ
Класс содержит 30 свойств, поэтому за описанием других свойств обращайтесь к файлу cimwin32.mfl, расположенному в каталоге %systemroot%\SYSTEM3\wbem.
■ Win32_StartupCommand — определяет файлы, запускаемые при входе пользователя в систему. При этом возвращаются не только исполняемые файлы, но и файлы других типов (независимо от расширения файла, если исполняемая программа обращается к данному файлу, то класс считает, что файл запускается при входе пользователя в систему). Например, на компьютере автора данный класс вернул около 4582 файлов, которые запускаются при входе пользователя в систему. Класс содержит следующие свойства.
• Command — возвращает командную строку, с помощью которой запускаются исполняемые файлы, или имя файла, который запускается исполняемым.
• User — имя учетной записи пользователя, при входе которого запускается данный файл (так описание свойства определено в файле cimwin32.mfl, хотя возвращаемое значение больше похоже на имя учетной записи, с правами которой данный файл запускается).
• Name — название запускаемого файла (без расширения).
• Location — значение Startup, говорящее о том, что данный файл запускается с помощью папки Автозагрузка, или ветвь реестра, из которой выполняется запуск данного файла.
■ Win32_NTEventlogFile — определяет параметры настройки системных журналов (рассмотренная оснастка Просмотр событий) и содержит следующие свойства:
• LogFileName — возвращает имя системного журнала;
• MaxFileSize — определяет предельный размер файла системного журнала;
• NumberOfRecords — возвращает количество записей, хранящихся в данный момент в системных журналах;
• OverwriteOutDated — количество дней, в течение которого запись может храниться в системном журнале.
■ Win32_AccountSID — определяет учетные записи и группы, созданные на данном компьютере. Класс содержит следующие два свойства.
• Element — перечисляет все доступные на компьютере группы и учетные записи. При этом разница между данными объектами отображается в виде класса, к которому они принадлежат (формат вывода в текстовый файл таков: пространство имен WMI и класс, к которому принадлежит данная учетная запись или группа, а также название данной учетной записи или группы,например, \\ME\root\cimv2 :Win32_Group.Domain="ME",Name="Администраторы").
• Setting — перечисляет SID учетных записей и групп, созданных на данном компьютере.
Это далеко не все возможные классы и их свойства. Автор не брал на себя ответственность по полному их описанию. Тем не менее уже по описанным свойствам можно понять, что инструментарий управления WMI позволяет получить описание если не всех параметров работы компьютера и установленных на нем приложений, то большинства из них. А если учитывать, что WMI постоянно развивается, то скоро от ее глаз не скроется ни одна мелочь в работе компьютера.
Другие классы и функции пространств имен WMI
WMI является неисчерпаемой темой для обсуждения, так как содержит просто огромное количество классов, не говоря уже о количестве функций, реализованных в этих классах. Для рассмотрения всех функций WMI (не говоря уже об объектах сервера сценариев Windows для доступа к файловой системе и реестру и их методах) необходимо писать отдельную книгу страниц где-то на 1000. Поэтому в контексте данной книги мы закончим обсуждение базы данных CIMOM и пространств имен WMI. Если же приведенных выше сценариев для вас мало, то в Интернете можно найти множество уже готовых сценариев работы с WMI. Кроме того, список всех классов, их функций, а также краткое описание работы этих функций можно найти в самой Windows XP. Краткие сведения обо всех функциях пространств имен WMI содержатся в файлах с расширениями MOF и MFL (в файлах с расширением MOF хранится описание функций на английском языке, а в файлах с расширением MFL — на русском), расположенных в каталоге %systemroot%\system32\wbem. Например, среди данных файлов можно найти файл sr.mof. В нем содержится описание всех классов, которые предназначены для работы с SystemRestore. Например, вот небольшая вырезка из файла, описывающая рассмотренный выше класс SystemRestore.
[Dynamic, Provider ("SystemRestoreProv")] class SystemRestore {
[read, write]
String Description;
[read, write]
uint32 RestorePointType;
[read, write]
uint32 EventType;
[read, write, key]
uint32 SequenceNumber;
[read, write] String CreationTime;
[Implemented, static, Description("The CreateRestorePoint method creates a restore point." "It returns a COM error code.")]
uint32 CreateRestorePoint([In] String Description, [In] uint32 RestorePointType, [In] uint32 EventType);
[Implemented, static, Description "The Enable method enables SR on a drive." "It returns a COM error code.")]
uint32 Enable([In] String Drive, [In] Boolean WaitTillEnabled);
[Implemented, static, Description("The Disable method disables SR on a drive." "It returns a COM error code.")]
uint32 Disable([In] String Drive);
[Implemented, static, Description("The Restore method restores the system to a specified restore point." "It returns a COM error code.")]
uint32 Restore([In] uint32 SequenceNumber);
[Implemented, static, Description("Returns the status (0=fail, 1=success, 2=interrupted) of the last restore.")]
uint32 GetLastRestoreStatus();
};
Как заметно из данной вырезки, с помощью класса SystemRestore можно определить, была ли успешной предыдущая попытка восстановления системы из контрольной точки, а также можно автоматически восстановить систему на основе указанной контрольной точки. К сожалению, не существует файла sr.mfl, хранящего описание на русском языке. Зато в каталоге %systemroot%\system32\wbem есть файл cimwin32.mfl, содержащий описание всех функций и классов пространства имен Root\CIMV2 на русском языке. В каталоге %systemroot%\ system32\wbem также находятся следующие интересные файлы.
■ regevent.mfl — описывает работу с реестром Windows XP.
■ licwmi.mfl — хранит свойства и методы для работы с функцией активизации Windows XP. В частности, метод для автоматической активизации операционной системы через Интернет.
■ Msi.mfl — описывает свойства и методы для работы с пакетами установки Windows. Некоторые свойства из этого файла (класс Win32_Product) были рассмотрены ранее. Методы же, которые он поддерживает, позволяют удаленно установить пакет установщика Windows с правами системы.
■ ntevt.mfl — хранит свойства и методы для работы с системными файлами журналов. В частности, методы очистки системных журналов или их копирования.
■ rsop.mfl — описывает свойства и методы для работы с результирующей политикой (RSoP).
■ secrcw32.mfl — хранит свойства и методы для работы с учетными записями компьютера, а также списками ACL и другими объектами безопасности компьютера.
■ smtpcons.mfl — описывает свойства для работы с почтовыми сообщениями smtp-сервера.
Стандартные сценарии сервера сценариев
Напоследок хотелось бы описать стандартные сценарии сервера сценариев Windows XP (поставляются вместе с Windows XP Professional). Все они расположены в каталоге %systemroot%\system32.
■ Eventquery.vbs — предназначен для работы с системными журналами событий (оснастка Просмотр событий) и при запуске без параметров, например cscript.exe C:\WINDOWS\SYSTEM32\eventquery.vbs, перечисляет все события, записанные в локальном журнале Система. Чтобы просмотреть возможные параметры работы данного сценария, необходимо ввести команду cscript.exe C:\WINDOWS\SYSTEM32\eventquery.vbs /?. Честно сказать, количество параметров впечатляет. Можно подключаться к удаленному компьютеру, для этого указать учетную запись и пароль, настроить фильтр выводимых записей событий, способ вывода событий и т.д. Сценарий хорошо описан, да к тому же еще и на русском языке, а также содержит набор примеров, поэтому его использование сложности не представляет.
Его также хорошо использовать для изучения работы инструментария управления WMI, так как данный сценарий написан на его основе, хотя размер сценария в 2080 строк не вдохновляет на изучение.
■ Pagefileconfig.vbs — используется для работы с файлом подкачки как локального, так и удаленного компьютера. При вызове без параметров отображает сведения о локальном файле подкачки: диск, на котором он расположен, путь и его имя, исходный размер файла подкачки, максимальный размер, а также размер файла подкачки на данный момент. Определяет количество свободного места на логическом диске.
Можно также выполнить команду cscript.exe C:\WINDOWS\SYSTEM32\ pagefileconfig.vbs /? для вывода описания возможных параметров данного сценария. Эти параметры объединены в группы, описание которых можно вызвать с помощью следующих команд.
• cscript C:\WINDOWS\SYSTEM32\pagefileconfig.vbs /change /? — описывает функции для изменения размера файла подкачки на локальном или удаленном компьютере.
• cscript C:\WINDOWS\SYSTEM32\pagefileconfig.vbs /create /? — создать или добавить новый файл подкачки на логическом диске локального или удаленного компьютера.
• cscript C:\WINDOWS\SYSTEM32\pagefileconfig.vbs /delete /? — удалить файл подкачки на логическом диске локального или удаленного компьютера.
• cscript C:\WINDOWS\SYSTEM32\pagefileconfig.vbs /query /? — отобразить текущие параметры файла подкачки на удаленном или локальном компьютере (если на локальном, то данная функция эквивалентна вызову сценария без параметров).
Сценарий написан при помощи инструментария управления WMI, но его размер в 3302 строчки также не способствует изучению.
■ Prncnfg.vbs — предназначен для выполнения конфигурации принтера, установленного на локальном компьютере: изменения его имени, порта, приоритета и многих других параметров.
■ Prndrvr.vbs — используется для выполнения настройки драйверов принтера, установленного на локальном компьютере: удаление, добавление, перечисление драйверов.
■ Prnjobs.vbs — предназначен для работы с заданиями принтера: просмотр всех заданий, приостановка и продолжение выполнения задания, а также отмена выполнения задания.
■ Prnmngr.vbs — используется для подключения и отключения принтеров (установленных на удаленном компьютере).
■ Prnport.vbs — предназначен для подключения и отключения ТСР-порта принтера.
■ Prnqctl.vbs — позволяет выполнить пробную печать на данном принтере, а также приостановить работу принтера.
Просмотр событий
С помощью оснастки Просмотр событий реализуется возможность просмотра трех системных журналов Windows XP, каждый их которых содержит сведения о том или ином компоненте компьютера: о приложениях, установленных на нем, о работе системных компонентов и о работе компонентов безопасности компьютера. Оснастка Просмотр событий входит в стандартную консоль Windows XP eventvwr.msc и имеет GUID-номер {975797FC-4E2A-11D0-B702-00C04FD8DBF7}.
Запуск консоли
После ввода в командной строке команды eventvwr.msc консоль управления Microsoft просматривает две дополнительные ветви реестра (естественно, что также она просматривает ветви реестра, относящиеся к настройке самой оснастки Просмотр событий).
Во-первых, просматривается содержимое ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog, хранящей настройки службы Журнал событий. Данная ветвь системного реестра включает в себя три раздела: Application, Security, System. Все три раздела просматриваются консолью управления Microsoft на существование параметра File расширенного строкового типа. Именно этот параметр и содержит путь к файлу журнала, хранящему все сведения, отображаемые в одном из журналов оснастки Просмотр событий. Соответственно параметр File раздела Application хранит путь к журналу приложения, параметр раздела Security — путь к журналу безопасности, а параметр раздела System — путь к журналу системы. Остальные параметры этой ветви реестра будут рассмотрены далее.
Во-вторых, просматривается содержимое ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\EventViewer, параметры которой будут рассмотрены далее в этом разделе.
Если запуск оснастки Просмотр событий не запрещен, то перед вами отобразится окно, подобное приведенному на рис. 11.6.
Рис. 11.6. Окно консоли Просмотр событий
ПРИМЕЧАНИЕ
С помощью добавления данной оснастки в консоль управления Microsoft можно просмотреть журналы событий другого компьютера. Это можно также сделать с помощью команды Подключиться к другому компьютеру меню Действие консоли Просмотр событий.
Дерево консоли Просмотр событий включает в себя три элемента — Приложение, Безопасность и Система. Выбор одного из этих элементов приведет к отображению на правой панели консоли содержимого соответствующего журнала, определенного в параметре File строкового типа рассмотренной выше ветви реестра. С помощью контекстного меню журналов дерева консоли можно также выполнить такие операции, как сохранение сведений из журнала (команда Сохранить файл журнала как), очистка журнала (команда Стереть все события), а также загрузка сведений из сохраненного ранее журнала (команда Открыть файл журнала).
Отдельно стоит сказать о команде контекстного меню Свойства. После выбора данной команды перед вами отобразится диалог, в котором можно изменить некоторые параметры журнала: имя, максимальный размер, а также определить интервал времени, по истечении которого журнал будет очищаться. С помощью данного диалога можно очистить журнал, а также узнать текущий размер журнала, дату его создания и изменения.
Правая панель консоли состоит из нескольких столбцов. Наиболее интересны из них следующие.
Тип. Столбец определяет тип, к которому относится соответствующая запись журнала. Существует три типа записей: Уведомление, Предупреждение и Ошибка. Записи типа Уведомление, как правило, несут информативный характер и описывают какое-либо событие, которое должно было произойти (то есть системе известно это событие). Записи Предупреждение, как правило, описывают событие, которое не произошло по непонятным причинам. Записи типа Ошибка, как правило, описывают события, после выполнения которых дальнейшая работа какой-либо функции программы или системы невозможна.
По умолчанию отображаются записи журнала всех типов, хотя существует возможность указания вывода лишь записей отдельных типов. Для этого необходимо в контекстном меню определенного журнала (в дереве консоли) выбрать команду Вид►Фильтр. После этого отобразится диалоговое окно, в котором можно настроить фильтр выводимых значений не только по полю Тип, но и по всем другим полям, описанным ниже.
Дата и Время. Эти два столбца определяют дату и время, когда произошло соответствующее событие.
Источник. Столбец определяет название программы, службы или компонента, в работе которого произошло описываемое событие. Названия всех возможных источников хранятся в реестре, и далее в этом разделе они еще будут рассмотрены.
Правая панель консоли определяет лишь заголовок сообщения журнала. Можно также прочитать описание соответствующей записи журнала. Для этого достаточно в контекстном меню необходимой записи выбрать команду Свойства. Например, на рис. 11.7 отображено окно описания для записи журнала Приложение.
В открывшемся диалоге отображается большая часть полей правой панели консоли, а также область описания записи и поле части содержимого памяти, ошибка или событие в которой породило данную запись (например, запись на рис. 11.7 вызвал ActiveX-объект с GUID-номером, отображенным в поле части содержимого памяти). Стоит также сказать о поле описания записи. Для записей из журнала Приложение данное поле иногда (если приложение, породившее данную запись журнала, написано корпорацией Microsoft) может хранить адрес, по которому можно найти дополнительную информацию о данной ошибке (например, запись на рис. 11.7). Адрес будет передаваться программе event.asp, которая и будет открывать адрес (или программу). По умолчанию используется адрес сайта Microsoft, хотя, как можно видеть на рис. 11.7, этот адрес можно переопределить. Для этого и применяется ветвь системного реестра HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\EventViewer, которая содержит следующие параметры.
Рис. 11.7. Диалог описания записи журнала
ПРИМЕЧАНИЕ
Данные параметры используются, начиная с Windows XP Service Pack 2.
■ MicrosoftRedirectionURL — этот параметр строкового типа определяет адрес сайта, который будет отображаться в поле описания. Адрес может не совпадать с реальным адресом (или командой), на который вы перейдете после щелчка на ссылке. По умолчанию используется адрес http://go.microsoft.com/fwlink/events.asp.
■ MicrosoftRedirectionProgram — параметр строкового типа, указывает реальный адрес сайта (или путь к программе), страница которого будет открываться при щелчке на данной ссылке. Значение данного параметра будет передаваться программе event.asp. По умолчанию в значении хранится путь к программе %SystemRoot%\PCHealth\HelpCtr\Binaries\HelpCtr.exe.
■ MicrosoftRedirectionProgramCommandLineParameters — этот параметр строкового типа определяет командную строку, которая будет передаваться программе event.asp. По умолчанию используется значение –url hcp://services/centers/support?topic=%s.
■ MicrosoftEventVwrDisableLinks — если значение данного параметра DWORD-типа будет равно 1, то ссылки дополнительной информации в поле описания отображаться не будут.
Напоследок хотелось бы напомнить о возможности ведения аудита доступа к тем или иным объектам файловой системы или реестра Windows XP. Все события аудита доступа будут записываться в журнал безопасности системы.
Чтобы определить аудит изменения, удаления, чтения и т.д. параметров ветви реестра, необходимо выбрать в контекстном меню данной ветви команду Разрешения. После этого перед вами отобразится диалог Разрешения, в котором нужно нажать кнопку Дополнительно. Затем откроется окно Дополнительные параметры безопасности, в котором нужно перейти на вкладку Аудит и нажать на ней кнопку Добавить. После этого система попросит указать учетную запись пользователя, а затем выведет диалог для выбора событий, возникновение которых приведет к записи в системный журнал безопасности информации о данных событиях.
Чтобы задать аудит доступа для папки или файла, необходимо в его диалоге Свойства перейти на вкладку Безопасность (данная вкладка доступна только на логических дисках, отформатированных под NTFS) и нажать на ней кнопку Дополнительно. После этого отобразится диалоговое окно Дополнительные параметры безопасности, работа с которым была описана выше.
Ветви реестра, используемые оснасткой
Теперь вкратце рассмотрим структуру ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog, содержащей настройки службы Журнал событий, используемой в работе оснастки Просмотр событий. Как уже говорилось, данная ветвь реестра включает в себя три раздела (Application, Security и System). Эти разделы могут хранить следующие параметры.
■ File — путь к файлу журнала. Этот параметр уже описывался выше.
■ MaxSize — параметр DWORD-типа, определяет максимальный размер файла данного журнала.
■ RestrictGuestAccess — этот параметр DWORD-типа определяет, разрешено ли пользователю учетной записи Гость просматривать содержимое журналов.
По умолчанию значение для всех журналов системы равно 1, то есть гостю доступ к журналам запрещен.
■ Retention — параметр DWORD-типа, определяет интервал времени в часах, по истечении которого система будет очищать данный журнал.
■ Sources — этот параметр REG_MULTI_SZ-типа хранит имена всех источников записей, которые могут присутствовать в данном журнале. Если быть точным, то значение этого параметра определяет названия разделов, вложенных в данный раздел. Параметры, содержащиеся в этих разделах, осуществляют поддержку записей от соответствующих источников. Если удалить источник из значения параметра Sources, то записи о нем не будут помещаться в данное приложение.
Кроме параметров, разделы журналов включают в себя другие разделы, описывающие программы, службы или компоненты операционной системы, которые могут быть источниками записей для данного журнала. Эти разделы содержат параметры, описывающие библиотеку, предназначенную для работы с соответствующим источником записей (параметры строкового типа EventMessageFile и ParameterMessageFile).
Редактор объекта групповой политики
Оснастка поставляется только с операционной системой Windows XP, входит в стандартную консоль gpedit.msc и имеет GUID-номер {8FC0B734-A0E1-11D1-A7D3-0000F87571E3}. Доступ к ней имеют только администраторы. С помощью данной оснастки можно запретить те или иные компоненты операционной системы Windows XP. Принцип ее работы довольно интересен, так как все ограничения на компоненты Windows XP заносятся не только в реестр, но и в два специальных файла. Это файлы с именем Registry.pol, расположенные в каталогах %systemroot%\system32\GroupPolicy\Machine и %systemroot%\system32\GroupPolicy\User (запись в данные каталоги разрешена только администраторам). Через определенные промежутки времени настройки из этих файлов заносятся в реестр (можно также воспользоваться командой gpupdate.exe, после выполнения которой настройки из файлов будут вручную внесены в реестр). Другими словами, если вы настроите ограничения с помощью групповых политик, а потом удалите из реестра параметры ограничений, то через некоторое время они опять будут записаны в реестр. Поэтому для снятия ограничений нужно либо пользоваться оснасткой Редактор объекта групповой политики, либо удалять также и файлы Registry.pol.
ПРИМЕЧАНИЕ
Если компьютер находится в домене, то на него действуют не только локальные, но и групповые политики на уровне домена и организационной единицы. При этом политики на уровне домена будут замещать собой политики локального компьютера (если изменяемые параметры реестра в этих политиках будут совпадать), а групповые политики на уровне организационной единицы будут замещать собой политики домена.
В книге будет рассказано лишь о локальном применении групповых политик.
Запуск консоли gpedit.msc
После запуска консоли gpedit.msc перед вами отобразится окно, изображенное на рис. 11.8.
Рис. 11.8. Окно консоли Групповая политика
ПРИМЕЧАНИЕ
С помощью добавления данной оснастки в консоль управления Microsoft можно просмотреть журналы событий другого компьютера.
Дерево консоли этого окна включает в себя два элемента — Конфигурация компьютера и Конфигурация пользователя. Как правило, эти элементы хранят одни и те же вложенные элементы: Конфигурация программ, Конфигурация Windows и Административные шаблоны. При этом если вы воспользуетесь содержимым элемента Конфигурация компьютера, то все изменения, вносимые вами, будут заноситься в корневой раздел реестра HKEY_LOCAL_MACHINE. Если же вы воспользуетесь содержимым элемента Конфигурация пользователя, то все изменения будут заноситься в корневой раздел HKEY_CURRENT_USER.
Работа с консолью
Вкратце рассмотрим содержимое элементов Конфигурация компьютера и Конфигурация пользователя.
Конфигурация программ
Элемент предназначен для хранения назначенных или опубликованных администратором программ (технология Software Installation). Если программа назначена, то всегда при запуске компьютера ее ярлык будет создаваться на Рабочем столе, и если она понадобится пользователю, то ему будет достаточно запустить этот ярлык или открыть файл с расширением, ассоциированным с программой, после чего начнется ее установка. Если же программа опубликована, то ссылка на нее будет помещена на вкладку Установка программ диалога Установка и удаление программ. Именно с помощью этой вкладки пользователь сможет установить необходимую программу.
Технология Software Installation применяется только в том случае, если в сети развернута Active Directory и данный компьютер входит в домен. Иначе элемент Конфигурация программ всегда будет пуст. Тем не менее, ради интереса, существует возможность регистрации этой оснастки как изолированной. Для этого достаточно создать раздел StandAlone в ветвях реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{942A8E4F-A261-11D1-A760-00C04FB9603F} и HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\{BACF5C8A-A3C7-11D1-A760-00C04FB9603F}. После этого в консоль управления Microsoft (mmc.exe) можно будет добавить оснастки Установка программ (пользователи) и Установка программ (компьютеры). В контекстном меню добавленных оснасток присутствует команда Создать►Пакет, после ее выбора вам предложат указать файл с расширением MSI, который будет назначаться или опубликовываться. После указания данного файла консоль управления Microsoft попытается получить к нему доступ по сети, а затем выведет диалог для выбора способа развертывания программы. И в самом конце консоль управления Microsoft попытается обратиться к Active Directory для развертывания программы.
Конфигурация Windows
Элемент содержит два вложенных раздела — Сценарии и Параметры безопасности.
Раздел Сценарии применяется для назначения программ или сценариев, которые будут автоматически запускаться:
■ при загрузке (Автозагрузка) и выключении компьютера (Завершение работы), в этом случае сценарии описываются в элементе Конфигурация компьютера и запускаются с правами системы;
■ при входе пользователя в систему (Вход в систему) и выходе из нее (Выход из системы), в этом случае сценарии описываются в элементе Конфигурация пользователя и запускаются от имени учетной записи зарегистрированного в системе пользователя.
Для примера попробуем назначить программу для запуска при выходе данного пользователя из системы. Для этого необходимо в контекстном меню раздела Выход из системы (Конфигурация пользователя►Конфигурация Windows►Сценарии) выбрать команду Свойства. После этого перед вами отобразится диалоговое окно, в котором можно будет добавить на исполнение новую программу (кнопка Добавить) либо удалить уже добавленную программу (кнопка Удалить). При добавлении программы необходимо будет указать имя программы, а также параметры ее запуска (если они необходимы). Если вы назначаете на выполнение сценарий, расположенный на локальном компьютере, то желательно, чтобы он находился в одном из следующих каталогов. Сценарий должен исполняться:
■ %systemroot%\System32\GroupPolicy\User\Scripts\Logon — при входе пользователя в систему;
■ %systemroot%\System32\GroupPolicy\User\Scripts\Logoff — при выходе пользователя из системы;
■ %systemroot%\System32\GroupPolicy\Machine\Scripts\Shutdown — при выключении компьютера;
■ %systemroot%\System32\GroupPolicy\Machine\Scripts\Startup — при включении компьютера.
Но что же происходит при назначении автоматического запуска программ? Как и при назначении групповых политик, при назначении программы редактируется как содержимое реестра, так и содержимое специального файла. Изменяемое содержимое реестра довольно сложно как в понимании, так и при ручном создании назначения файла, поэтому рассмотрено оно не будет. А вот синтаксис специальных файлов довольно прост. Существует два файла для автозагрузки. Оба они называются scripts.ini (это скрытые файлы), но первый из них расположен в каталоге %systemroot%\System32\GroupPolicy\User\Scripts, а второй в каталоге %systemroot%\System32\GroupPolicy\Machine\Scripts. Как можно догадаться, первый файл предназначен для хранения программ, запускаемых при входе пользователя в систему и выходе из нее, а второй файл хранит программы, загружаемые при включении компьютера и завершении его работы. Для примера рассмотрим возможное содержимое файла scripts.ini из каталога %systemroot%\System32\GroupPolicy\User\Scripts.
[Startup]
0CmdLine=c: \windows\regedit.exe
0Parameters=
1Cmdl_ine=c:\windows\system32\notepad.exe
1Parameters=
[Shutdown]
0CmdLine=D:\recent\Documents and Settings\parad0x\Рабочий стол\1.vbs
0Parameters=
Содержимое файла очень просто в понимании и легко для редактирования. Файл может состоять из двух разделов — Startup и Shutdown (для файла из каталога %systemroot%\System32\GroupPolicy\User\Scripts это разделы Logon и Logoff). Эти разделы могут хранить записи в следующем формате:
«номер программы, начиная с нуля»CmdLine=«путь к программе»
«номер программы, начиная с нуля»Parameters=«параметры запуска данной программы»
Например, в данном случае при включении компьютера будут запускаться программы regedit.exe и notepad.exe (поскольку программы запускаются до входа пользователя, вы не увидите их окон, их запуск в примере приведен для наглядности), а при завершении работы компьютера будет запускаться специальный сценарий. Вы и сами можете вручную отредактировать содержимое файлов scripts.ini, все внесенные вами изменения будут сразу же учтены.
Раздел Параметры безопасности элемента Конфигурация компьютера включает в себя разделы Политики учетных записей, Локальные политики, Политики открытого ключа, Политики ограниченного использования программ и Политики безопасности IP на "Локальный компьютер". Для элемента Конфигурация пользователя раздел Параметры безопасности содержит только один вложенный раздел — Политики открытого ключа, с помощью которого можно импортировать в хранилище сертификатов находящиеся на данном компьютере сертификаты. Разделы Политики учетных записей и Локальные политики являются частью оснастки Шаблоны безопасности, поэтому будут рассмотрены в разделе, описывающем данную оснастку.
Раздел Политики открытого ключа включает в себя подраздел Файловая система EFS, который позволяет создать агент восстановления данных для шифрованной файловой системы EFS. Для этого достаточно в контекстном меню подраздела Файловая система EFS выбрать команду Добавить агента восстановления данных. После этого отобразится диалоговое окно Мастера добавления агента восстановления, который перед созданием агента восстановления попросит вас указать сертификат пользователя, выступающего в роли агента восстановления.
Политика ограниченного использования программ применяется для запрещения запуска на данном компьютере тех или иных программ или для указания программ, которые запускать разрешено. При этом определение разрешенных или запрещенных для исполнения программ или сценариев возможно по четырем условиям.
■ По сертификату, который выдан сценарию или пакету установщика Windows (MSI). Если сценарий имеет корректную подпись сертификата, то его запуск разрешен (или запрещен). При этом следует учитывать, что данный способ нельзя применять к файлам с расширениями EXE и DLL.
Этот способ является наиболее защищенным способом разрешения только запуска определенных сценариев и пакетов установщика Windows, если по умолчанию запуск всех сценариев запрещен.
■ По хэшу, которым подписан файл. Если для определенного файла создан хэш (последовательность байтов, гарантирующая, что данный файл не был изменен, то есть в теории не существует двух одинаковых хэшей), то на основе этого хэша можно определить, разрешено или запрещено запускать данный файл. При использовании хэша можно определять правила запуска для файлов с любым расширением.
При определении хэша для разрешения запуска программы этот способ является хорошей альтернативой (или дополнением) способу определения разрешения запуска файла на основе подписи сертификата. Если же вы будете использовать хэш для запрещения запуска какой-либо программы, то следует учитывать, что при изменении содержимого программы меняется и ее хэш. Другими словами, если пользователь с помощью любого компилятора изменит хотя бы один символ в файле программы, то программа будет иметь совершенно другой хэш, поэтому ее запуск будет разрешен.
■ По зоне Интернета, из которой был взят пакет установщика Windows (данный способ ограничения может быть применен только к пакетам установщика Windows). По умолчанию операционная система Windows XP разделяет все пространство сети на четыре зоны: Интернет, Локальный компьютер, Местная интрасеть, Ограниченные узлы и Надежные узлы (вспомните раздел о параметрах реестра для настройки браузера Internet Explorer). На основе того, из какой зоны был взят данный пакет установщика Windows, можно определить, разрешено ли его запускать.
Если пользователям в сети разрешено запускать не только пакеты установщика Windows, одобренные администратором (способ определения разрешения на запуск по сертификату пакета установщика Windows), то рекомендуется хотя бы настроить ограничения установки пакетов из различных зон Интернета.
■ По каталогу, в котором находится файл. Можно определить каталоги, файлы, из которых запрещено или, наоборот, разрешено запускать.
Данный способ является наименее защищенным, так как его довольно легко обойти, просто переместив файл из запрещенного каталога в разрешенный. Хотя вместе с другими способами он позволяет более тонко настроить политику ограниченного использования программ.
Итак, как же все теоретические основы, описанные выше, реализуются в консоли Групповая политика? Если сказать честно, то их реализация немного запутанна. Раздел Политика ограниченного использования программ содержит два вложенных раздела (Уровни безопасности и Дополнительные правила), а также три правила: Принудительный, Назначенные типы и Доверенные издатели.
■ Раздел Уровни безопасности позволяет определить основной уровень разрешения запуска программ, на котором будет работать операционная система (то есть данный уровень определяет, разрешено ли запускать файл, если его запуск не был ограничен (или разрешен) никакими политиками ограничения запуска). Основных уровней всего два — разрешать запуск всех файлов, а также запрещать запуск всех файлов. По умолчанию используется уровень разрешения запуска всех файлов, но если необходимо ограничить доступ к файлам, то рекомендуется установить основной уровень запрещения запуска всех файлов.
Для смены основного уровня безопасности необходимо в его контекстном меню выбрать команду По умолчанию.
■ Раздел Дополнительные правила. Именно этот элемент и определяет политики на запуск файлов. По умолчанию используются политики разрешения запуска файлов, расположенных в каталогах %systemroot%, %systemroot%\system32 и %programfiles% (способ разрешения запуска файлов по каталогу, в котором они находятся). Это необходимо для того, чтобы операционная система смогла корректно загрузиться, поэтому не рекомендуется запрещать доступ к содержимому этих каталогов.
Чтобы создать свою политику запуска файлов, необходимо воспользоваться контекстным меню раздела Дополнительные правила. Данное меню включает в себя следующие уже знакомые вам команды: Создать правило для сертификата, Создать правило для хэша, Создать правило для зоны Интернета и Создать правило для пути. При использовании создания правила для сертификата консоль управления Microsoft попросит вас указать, разрешено или запрещено запускать файлы, описанные в сертификате, а также файл сертификата, на основе которого определяется возможность доступа к файлу. При использовании создания правила для хэша консоль управления Microsoft предложит вам указать, разрешено или запрещено запускать файл, а также путь к фалу, для которого назначается политика. При использовании создания правила для зоны Интернета консоль управления Microsoft попросит вас указать, разрешено или запрещено запускать пакеты установщика Windows из зоны, а также определить зону, для которой создается данная политика. При использовании создания правила для пути консоль управления Microsoft предложит указать, разрешено или запрещено запускать файлы из каталога, а также определить сам путь к каталогу.
■ Правило Принудительный позволяет определить, относятся ли к запрещенным для исполнения файлы библиотек программ (DLL), которые по умолчанию к таким файлам не относятся, а также определить, будут ли создаваемые политики ограничения доступа влиять на администраторов компьютера (по умолчанию влияют на все типы учетных записей).
■ Правило Назначенные типы файлов позволяет просмотреть список всех расширений файлов, на которые распространяются политики запуска, а также добавить или удалить из данного списка определенные расширения файлов.
■ Правило Доверенные издатели позволяет определить, разрешено ли обычным пользователям выбирать доверенных издателей или это разрешено только администраторам (по умолчанию это разрешено и обычным пользователям), а также позволяет указать, будет ли определяться отзыв данного сертификата по имени издателя и штампу времени (по умолчанию эти возможности отключены).
ПРИМЕЧАНИЕ
Чтобы отредактировать правило, нужно в его контекстном меню выбрать команду Свойства.
Теперь рассмотрим ветви реестра, на которые влияют политики ограничения запуска программ. Все настройки политик ограничения запуска программ находятся в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers. Ветвь содержит следующие параметры.
ПРИМЕЧАНИЕ
Для хранения параметров политик ограничения доступа также используются разделы из ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{GUID-номер объекта групповой политики}Machine\Software\Policies\Microsoft\Windows\Safer\Codeidentifiers. Разделы из этой ветви имеют больший приоритет, поэтому желательно редактировать именно их.
■ DefaultLevel — этот параметр DWORD типа определяет основной режим безопасности компьютера. По умолчанию значение равно 0x00040000, оно показывает, что разрешен запуск любых файлов. Если же значение данного параметра равно 0, то по умолчанию запуск файлов будет запрещен.
■ ExecutableTypes — данный параметр REG_MULTI_SZ типа содержит список всех расширений файлов, на которые будут действовать политики ограничений запуска программ.
■ LogFileName — параметр строкового типа, хранит путь к текстовому файлу (и его название), в который будут заноситься сведения обо всех попытках запуска запрещенных и разрешенных программ. По умолчанию параметр отсутствует.
■ PolicyScope — если значение данного параметра DWORD типа равно 1, то политики ограничений запуска не будут относиться к администраторам локального компьютера. Если же значение данного параметра равно 0, то политики ограничений будут накладываться на все учетные записи данного компьютера.
■ TransparentEnabled — если значение данного параметра DWORD типа равно 2, то политики ограничений запуска будут относиться не только к программам, но и к библиотекам DLL, которые используются этими программами. Если же значение равно 1, то ограничения не будут накладываться на библиотеки, используемые запрещенными программами.
Сами же настройки политик ограничения располагаются в одном из разделов ветви системного реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{GUID-номер объекта групповой политики}Machine\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers (по умолчанию отсутствует). Данная ветвь реестра включает в себя два раздела: 0 и 262144. Раздел 0 хранит стандартные политики по ограничению доступа (точнее, по разрешению) к файлам в каталогах %systemroot%, %systemroot%\system32 и %programfiles%. Раздел 262144 содержит пользовательские политики ограничения запуска файлов. Оба этих раздела могут хранить следующие вложенные подразделы.
■ Hashes — содержит политики ограничения доступа к файлам по их хэшу. Для каждой политики по ограничению файла в этом подразделе находится еще два подраздела. Первый из подразделов определяет хэш файла MD 5, а второй — хэш файла по алгоритму SHA-1.
■ Paths — хранит политики ограничения доступа к файлам по каталогу, в котором они хранятся.
■ UrlZones — содержит политики ограничения доступа к пакетам установщика Windows взятым из определенной зоны Интернета.
Политика безопасности IP позволяет настроить протокол IPSec для защиты пакетов, передаваемых между компьютерами, на тот или иной уровень безопасности. При этом стоит учитывать, что для работы протокола IPSec необходима служба Службы IPSEC и если эта служба остановлена, то вы не сможете воспользоваться возможностью защиты передаваемых данных с помощью протокола IPSec. По умолчанию доступны только три политики безопасности IP — Клиент (Ответ только), Сервер (Запрос безопасности) и Сервер безопасности (Требуется безопасность). Все эти политики для обеспечения подлинности используют протокол Kerberos, то есть их нельзя применять для компьютеров, не входящих в домен Active Directory (хотя с помощью диалога Свойства метод проверки подлинности можно изменить). Вместо изменения стандартных политик рекомендуется создать свои собственные. Для этого достаточно в контекстном меню раздела Политика безопасности IP на "Локальный компьютер" выбрать команду Создать политику безопасности IP. После этого отобразится окно Мастера политики IP-безопасности, который предложит вам задать имя политики, ее описание, а также указать, будет ли данная политика использоваться по умолчанию для установки соединений с другими компьютерами. Если данная политика не будет использоваться по умолчанию, то мастер закончит свою работу и выведет диалог Свойства созданной вами политики, чтобы вы могли ее настроить. Если же политика будет использоваться по умолчанию, то мастер попросит вас также указать метод проверки подлинности, используемый по умолчанию для установки соединения. Возможны три метода: метод c использованием протокола Kerberos, метод с использованием сертификатов и метод с использованием пароля (общий секрет). После того как вы укажете метод проверки подлинности при установке соединения, мастер закончит свою работу и выведет диалог Свойства созданной вами политики.
В контексте данной книги диалог Свойства политик безопасности IP рассмотрен не будет, так как для полного и понятного описания настроек этих политик может понадобиться отдельная книга.
С помощью раздела Настройка Internet Explorer можно настроить интерфейс браузера Internet Explorer, а также параметров его подключения к Интернету. Этот раздел консоли Групповая политика содержит следующие вложенные разделы: Пользовательский интерфейс обозревателя, Подключение, URL-адреса, Безопасность и Программы. Вкратце рассмотрим возможности, которые предоставляют эти разделы.
Раздел Пользовательский интерфейс обозревателя позволяет настроить такие элементы окна браузера Internet Explorer, как заголовок окна (Заголовок обозревателя), изображения для фона панели инструментов (Настройка панели инструментов), а также логотипы браузера (можно настраивать как статический логотип, так и GIF-файл для отображения динамического логотипа при подключении к сайту) (Эмблемы).
Можно также добавить собственные кнопки к панели инструментов. Раньше уже были описаны возможности изменения всех этих элементов интерфейса с помощью реестра — эти же параметры реестра применяются и консолью управления Microsoft, хотя при их изменении с ее помощью есть и некоторые очень интересные особенности, которые будут описаны ниже.
Раздел Подключение позволяет настроить такие параметры браузера, как строка, добавляемая к строке обозревателя (Строка обозревателя), используемые для подключения к прокси-серверу адреса и порты (для каждого протокола) (Параметры прокси-сервера), а также адрес компьютера, содержащего сценарий для автоматической настройки обозревателя (Автоматическая настройка обозревателя). С помощью данного раздела можно также импортировать настройки, расположенные на вкладке Подключения диалога Свойства обозревателя, в файлы, расположенные в каталоге %systemroot%\system32\GroupPolicy\User\MICROSOFT\IEAK\ BRANDING\cs.
Раздел URL-адреса позволяет настроить содержимое папок Избранное и Ссылки (Избранное и ссылки), а также задать стандартные адреса Интернета (Важные URL-адреса). Под стандартными адресами понимаются следующие: адрес домашней страницы, адрес панели поиска и адрес страницы поддержки.
Раздел Безопасность позволяет импортировать настройки зон Интернета и настройки ограничений браузера в INF-файлы (Зоны безопасности и оценка содержимого). Зоны безопасности импортируются в файлы seczones.inf и seczrsop.inf каталога %systemroot%\system32\GroupPolicy\User\MICROSOFT\IEAK\BRANDING\ZONES, а параметры оценки содержимого (Rating) импортируются в INF-файлы ratings.inf и ratrsop.inf, которые расположены в каталоге %systemroot%\system32\GroupPolicy\User\MICROSOFT\IEAK\BRANDING\RATINGS. С помощью этого раздела можно импортировать параметры настройки Authenticode (сертификаты доверенных издателей, а также сертификаты доверенных агентств выдачи сертификатов). Для этого предназначен элемент Параметры Authenticode.
Раздел Программы позволяет импортировать настройки вкладки Программы, расположенной в диалоговом окне Свойства обозревателя, в файл programs.inf. Этот файл находится в каталоге %systemroot%\system32\GroupPolicy\User\MICROSOFT\IEAK\BRANDING\PROGRAMS.
Теперь поговорим о том, как выполняется запись в реестр всех настроек, расположенных в разделе Настройка Internet Explorer. По умолчанию все настройки из этого раздела заносятся в файл install.ins, расположенный в каталоге %systemroot%\system32\GroupPolicy\User\MICROSOFT\IEAK. По умолчанию только администраторы могут выполнять запись данных в этот каталог, хотя модифицировать файл install.ins можно от имени любого пользователя. Это обычный текстовый файл с расширением INS, хранящий настройки, которые можно изменить с помощью раздела Настройка Internet Explorer. Данный файл довольно прост в понимании, поэтому не будем останавливаться на описании каждого его раздела, а просто приведем листинг содержимого этого файла (где это было возможно, адреса и названия создаваемых элементов описывают сами создаваемые элементы).
[Branding]
GPVersion=6.00.2900.2180
NoFavorites=1
NoLinks=1
Window_Title_CN=Это заголовок
Window_Title=Microsoft Internet Explorer предоставлен: Это заголовок
ToolbarBitmap=E:\images\fotoo\Art_galery\рисунок_для_фона_панели_инструментов.bmp
UserAgent=строка, добавляемая к строке обозревателя
[Small_Logo]
Name=логотип_22х22.BMP
Path=D:\my_books\логотип_22х22.BMP
[Big_Logo]
Name=логотип_38х38.BMP
Path=D:\my_books\логотип_38х38.BMP
[Animation]
Small_Name=анимированный_логотип_22х22.BMP
Small_Path=D:\my_books\анимированный_логотип_22х22.BMP
Big_Name=анимированный_логотип_38х38.BMP
Big_Path=D:\my_books\анимированный_логотип_38х38.BMP
DoAnimation=1
[URL]
Search_Page=http://www.адрес_панели_поиска.com
AutoConfigTime=5
AutoDetect=1
AutoConfig=1
AutoConfigURL=http://www.адрес_автонастройки_для_INS_файла.ru
AutoConfigJSURL=http://www.адрес_автонастройки_для_JS_файла_и_других.ru
Home_Page=http://www.адрес_домашней_страницы.com
Help_Page=http://www.адрес_страницы_поддержки.com
[ExtRegInf]
SecZones=*,seczones.inf,DefaultInstall
Ratings=*,ratings.inf,DefaultInstall
Programs=*,programs.inf,DefaultInstall
connset=connect.inf,DefaultInstall
[ExtRegInf.Hkcu]
connset=connect.inf,IeakInstall.Hkcu
SecZones=seczones.inf,IeakInstall.Hkcu
Programs=*,programs.inf,IEAKInstall.HKCU
[Proxy]
HTTP_Proxy_Server=666.66.66.66:80
FTP_Proxy_Server=666.66.66.66:80
Gopher_Proxy_Server=666.66.66.66:80
Secure_Proxy_Server=666.66.66.66:80
Socks_Proxy_Server=666.66.66.66:80
Proxy_Override=
Use_Same_Proxy=0
Proxy_Enable=1
[Security Imports]
TrustedPublisherLock=0
ImportSecZones=1
ImportRatings=1
[ExtRegInf.Hklm]
SecZones=seczones.inf,IeakInstall.Hklm
Ratings=ratings.inf,IEAKInstall.HKLM
Programs=*,programs.inf,IEAKInstall.HKLM
[BrowserToolbars]
Caption0=это создаваемая кнопка на панели инструментов
Action0=D:\Program files\Filemon.exe
Icon0=E:\images\samplies.ico
HotIcon0=E:\images\samplies.ico
Show0=1
[ConnectionSettings]
ConnectName0=Nokia 7270 USB (OTA)
ConnectSize0=2884
ConnectName1=Nokia 7270 USB (OTA)
ConnectSize1=2884
Option=1
EnableAutodial=1
NoNetAutodial=1
Файл хранит большое количество настроек, а также ссылок на другие INF-файлы, импортированные с помощью раздела Настройка Internet Explorer. Все импортируемые файлы, на которые содержатся ссылки в описываемом файле, экспортируются в реестр при открытии любого элемента раздела Настройка Internet Explorer. При этом же в реестр заносятся все настройки из файла install.ins. Причем самое главное состоит в том, что эти настройки заносятся не консолью управления Microsoft, как можно было бы подумать, а процессом WINLOGON.EXE, запущенным от имени системы. Другими словами, даже если пользователь не обладает правами на изменение указанных в файле install.ins ветвей реестра, они все равно будут изменены.
ПРИМЕЧАНИЕ
Довольно странное решение Microsoft. В конце книги я попытаюсь высказать свои суждения по поводу использования запущенных от имени системы процессов в общем и о данном способе записи содержимого файла в реестр в частности.
Административные шаблоны
С помощью административных шаблонов можно более тонко настроить как ограничения на работу отдельных компонентов компьютера, так и сами эти компоненты. Многие считают, что административные шаблоны и являются групповой политикой, хотя это не совсем так. Если учесть, что элементы групповой политики используют для своей реализации ветви системного реестра Windows HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies и HKEY_LOCAL_MACHINE\SOFTWARE\Policies (а также эти ветви из корневого раздела HKEY_CURRENT_USER), то к групповым политикам можно отнести большинство элементов одноименной консоли. Особенностью административных шаблонов является то, что все их настройки берутся из специальных текстовых файлов с расширением ADM. Эти файлы написаны на специальном языке сценариев и расположены в каталоге %systemroot%\system32\GroupPolicy\Adm. Копии этих файлов могут находиться в каталоге %systemroot%\inf (причем, как правило, в этом каталоге находятся дополнительные ADM-файлы, не принимающие участия в построении списка Административные шаблоны). Вкратце рассмотрим назначение всех этих ADM-файлов.
■ system.adm — имеет размер около 1824 Кбайт и хранит большую часть настроек конфигурации различных компонентов компьютера. По умолчанию он используется для построения элемента Административные шаблоны.
■ wuau.adm — размером около 44 Кбайт и содержит настройки ограничений на работу автоматического обновления Windows. По умолчанию используется для построения элемента Административные шаблоны.
■ wuau.adm — имеет размер около 44 Кбайт и хранит настройки ограничений на работу автоматического обновления Windows. По умолчанию он используется для построения элемента Административные шаблоны.
■ wmplayer.adm — размером около 69 Кбайт и содержит настройки ограничений на работу Проигрывателя Windows Media. По умолчанию используется для построения элемента Административные шаблоны.
■ conf.adm — имеет размер около 42 Кбайт и хранит настройки ограничений на работу программы NetMeeting. По умолчанию он используется для построения элемента Административные шаблоны.
■ inetres.adm — размером около 1470 Кбайт и содержит настройки ограничений на работу браузера Internet Explorer. По умолчанию используется для построения элемента Административные шаблоны.
■ inetset.adm — имеет размер около 17 Кбайт и хранит дополнительные настройки ограничений на работу браузера Internet Explorer. Он не используется для построения элемента Административные шаблоны. Кроме того, следует учитывать, что использование возможностей данного файла оставляет «татуировки на реестре». Об этом термине будет рассказано чуть позже.
■ inetcorp.adm — размером около 7 Кбайт и содержит дополнительные настройки ограничений на работу браузера Internet Explorer. Он не используется для построения элемента Административные шаблоны. Кроме того, следует учитывать, что использование возможностей данного файла оставляет «татуировки на реестре». А главное, надо учесть, что данный файл был написан для более ранних версий операционной системы Windows, чем Windows 2000.
Обычно, каждое правило административных шаблонов может иметь три состояния.
■ Не задан — если правило имеет данное значение, то параметр реестра, используемый этим правилом, удален из реестра. Иными словами, если присвоить правилу данное состояние, то параметр, используемый правилом, будет удален из реестра. Данное состояние корректно обрабатывается стандартными ADM-файлами Windows XP. Если же оно не будет поддерживаться правилами ADM-файла (как это было в Windows NT), то данные правила будут оставлять «татуировки на реестре». Другими словами, установка состояния Не задан не будет приводить к удалению параметра, и этот параметр и дальше будет ограничивать правило.
■ Включен — если правило имеет данное состояние, то значение параметра реестра, используемого этим правилом, будет равно 1.
■ Отключен — если правило имеет данное состояние, то значение параметра реестра, используемого этим правилом, будет равно 0.
Здесь не будут рассмотрены все существующие правила элемента Административные шаблоны, так как они и так содержат подробное объяснение того, что они делают. Чтобы просмотреть это объяснение, достаточно выбрать правило и перейти на расширенный вид (рис. 11.9) либо в диалоге Свойства конкретного правила (открывается выбором команды Свойства из контекстного меню правила) выбрать вкладку Объяснение. На вкладке Параметры можно узнать версии Windows, для которых применяется данное правило.
Тем не менее, чтобы иметь общее представление о том, что позволяют сделать административные шаблоны, рассмотрим некоторые из их правил.
Рис. 11.9. Описание правила
Компоненты Windows►Windows Update. Раздел находится в элементе Конфигурация компьютера и строится на основе ADM-файла wuau.adm. Раздел хранит настройки автоматического обновления и использует для своей работы ветвь реестра HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU. Эта ветвь может содержать следующие параметры DWORD-типа.
■ NoAutoUpdate — если значение равно 1, то возможность автоматического обновления будет отключена.
■ AUOptions — определяет режим работы автоматического обновления (если значение параметра NoAutoUpdate равно 0). Он может принимать следующие значения:
• 2 — перед загрузкой обновлений и перед установкой уведомлений система будет выдавать сообщение об этом;
• 3 — система будет автоматически загружать обновления, но перед их установкой будет уведомлять пользователя (данный режим используется по умолчанию);
• 4 — система будет как загружать, так и устанавливать обновления без уведомления пользователя, причем устанавливать будет лишь в то время, которое указано в параметрах ScheduledInstallDay и ScheduledInstallTime;
• 5 — если параметр будет иметь это значение, то системному администратору предстоит самому решить, какой режим работы автоматического обновления должен использоваться.
■ ScheduledInstallDay — определяет день, в который будут устанавливаться все скачанные обновления, если значение параметра AUOptions равно 4.
Скачанные обновления будут устанавливаться:
• 0 — ежедневно (данное значение используется по умолчанию);
• 1 — каждое воскресенье;
• 2 — каждый понедельник;
• 3 — каждый вторник;
• 4 — каждую среду;
• 5 — каждый четверг;
• 6 — каждую пятницу;
• 7 — каждую субботу.
■ ScheduledInstallTime — определяет время, в которое будут устанавливаться все скачанные обновления, если значение параметра AUOptions равно 4.
С помощью административных шаблонов можно указать компьютер, с которого будут скачиваться обновления, и многие другие параметры работы автоматического обновления. Более подробно об этом можно прочитать в описаниях правил административных шаблонов или в базе данных реестра, поставляемой вместе с этой книгой.
Компоненты Windows►Проигрыватель Windows Media. Раздел находится в элементе Конфигурация компьютера и строится на основе ADM-файла wmplayer.adm. Раздел содержит настройки конфигурации Проигрывателя Windows Media и использует для работы ветвь реестра HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsMediaPlayer, которая может хранить следующие параметры.
■ DontUseFrameInterpolation — определяет, будет ли использоваться сглаживание изображения при просмотре видео. Сглаживание изображения на мощных компьютерах может вызвать повышение качества, но на маломощных может привести лишь к притормаживанию и артефактам изображения. Если значение данного параметра равно 1, то возможность сглаживания изображений использоваться не будет.
■ DisableAutoUpdate — если значение равно 1, то возможность автоматического обновления проигрывателя будет отключена.
Кроме того, с помощью данного пути в элементе Конфигурация пользователя можно скрыть следующие вкладки диалога Параметры: Сеть, Конфиденциальность и Безопасность, а также настроить многие другие параметры интерфейса проигрывателя. Более подробно об этом можно прочитать в описаниях правил административных шаблонов или в базе данных реестра, поставляемой вместе с книгой.
Компоненты Windows►Internet Explorer►Панель управления обозревателем. Раздел находится как в элементе Конфигурация компьютера, так и в элементе Конфигурация пользователя, и строится на основе ADM-файла inetres.adm. Раздел содержит настройки конфигурации диалога Свойства обозревателя и использует для работы ветвь реестра HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel (или ветвь из корневого раздела HKEY_LOCAL_MACHINE), которая может хранить следующие параметры DWORD-типа.
■ Privacy Settings — если значение равно 1, то будет запрещено изменять настройки параметров на вкладке Конфиденциальность.
■ PrivacyTab — при установке значения равным 1 в диалоге Свойства обозревателя будет скрыта вкладка Конфиденциальность.
ВНИМАНИЕ
Несмотря на все приведенные выше запреты, диалоговое окно Параметры блокирования всплывающих окон можно будет запустить с помощью команды rundll32.exe inetcpl.cpl, DisplayPopupWindowManagementDialog.
■ ConnectionsTab — если значение равно 1, то в диалоге Свойства обозревателя будет скрыта вкладка Подключение.
■ Connection Settings — при установке значения равным 1 будет запрещено изменение содержимого на вкладке Подключение.
■ Autoconfig — если значение равно 1, то флажок Использовать сценарий автоматической настройки в диалоговом окне Настройка локальной сети будет снят, а поле Адрес данного диалогового окна будет неактивно (окно отображается после нажатия кнопки Настройка LAN, расположенной на вкладке Подключения диалога Свойства обозревателя).
ВНИМАНИЕ
Несмотря на все приведенные выше запреты, флажок Использовать сценарий автоматической настройки (как и поле Адрес) можно будет установить с помощью команды rundll32.exe INETCFG.dll, InetSetAutoProxyA «URL или IP-адрес компьютера, содержащего сценарий настройки».
■ ProgramsTab — при установке значения равным 1 в диалоге Свойства обозревателя будет скрыта вкладка Программы.
■ AdvancedTab — если значение равно 1, то в диалоге Свойства обозревателя будет скрыта вкладка Дополнительно.
■ Advanced — при установке значения равным 1 будет запрещено редактирование параметров на вкладке Дополнительно диалога Свойства обозревателя.
■ GeneralTab — если значение равно 1, то в диалоге Свойства обозревателя будет скрыта вкладка Общие.
ВНИМАНИЕ
Несмотря на приведенный выше запрет, диалог Языки, который можно было открыть с помощью вкладки Общие, можно будет запустить с помощью команды rundll32.exe inetcpl.cpl, OpenLanguageDialog.
■ SecurityTab — при установке значения равным 1 в диалоге Свойства обозревателя будет скрыта вкладка Безопасность.
■ SecAddSites — если значение равно 1, то будет запрещено изменение узлов в зонах, отображаемых при нажатии кнопки Узлы на вкладке Безопасность.
■ SecChangeSettings — при установке значения равным 1 будет запрещено изменять уровни безопасности на вкладке Безопасность диалога Свойства обозревателя.
ВНИМАНИЕ
Несмотря на все приведенные выше запреты, диалог Безопасность можно будет запустить с помощью команды rundll32.exe inetcpl.cpl, LaunchSecurityDialogEx.
■ ContentTab — если значение равно 1, то в диалоге Свойства обозревателя будет скрыта вкладка Содержание.
■ Ratings — при установке значения равным 1 будет запрещено изменять ограничение доступа к страницам Интернета с помощью вкладки Содержание.
■ Certificates — если значение равно 1, то кнопки Сертификаты и Издатели на вкладке Содержание будут неактивны.
■ CertifPers — при установке значения равным 1 кнопка Сертификаты на вкладке Содержание будет неактивна.
■ CertifPub — если значение равно 1, то кнопка Издатели на вкладке Содержание будет неактивна.
■ CertifSite — при установке значения равным 1 кнопка Сертификаты на вкладке Содержание будет неактивна.
ВНИМАНИЕ
Несмотря на все приведенные выше запреты, диалог Сертификаты (как и диалог Издатели) можно будет запустить с помощью команды rundll32.exe CRYPTUI.dll, CryptUIStartCertMgr или других подобных ей команд, которые были рассмотрены в части 1.
Несмотря на все приведенные выше запреты, диалог Ограничение доступа можно будет запустить с помощью команды rundll32.exe IEAKENG.dll, ModifyRatings или других подобных ей команд, которые были рассмотрены в части 1. Можно также включить ограничение доступа. Для этого необходимо воспользоваться командой rundll32.exe MSRATING.dll, RatingEnable.
Как можно заметить, многие из приведенных ограничений довольно просто обходятся с помощью команд rundll32 (именно поэтому они были описаны), поэтому эти ограничения использовать не рекомендуется. Вообще, если безопасность компьютера имеет первостепенную важность, то рекомендуется не полагаться на все ограничения, которые просто скрывают вкладки или делают неактивными те или иные элементы, так как такие ограничения в большинстве случаев можно обойти или с помощью команд rundll32, или непосредственно с помощью редактирования реестра.
ПРИМЕЧАНИЕ
Если же вы все-таки решили использовать возможности скрытия вкладок диалога Свойства обозревателя, то могу предложить интересный способ их быстрой установки. Для этого нужно вызвать команду rundll32.exe IEAKENG.dll, ShowInetcpl. После выполнения этой команды rundll32 сам создаст все приведенные выше параметры и присвоит им значение 1. Затем он попытается открыть диалог Свойства обозревателя, после чего напишет, что открытие данного диалога запрещено администратором. Если нажать одну из кнопок данного диалога, то все созданные параметры ограничений будут удалены, но если просто завершить процесс rundll32 (с помощью Диспетчера задач), то параметры так и останутся установленными в реестре.
Можно также воспользоваться командой rundll32.exe IEAKENG.dll, ModifyZones для удаления параметров скрытия вкладок Безопасность и Конфиденциальность из корневого раздела HKEY_CLASSES_ROOT. После выполнения данной команды параметры PrivacyTab и SecurityTab будут удалены из реестра, а при закрытии диалога Свойства обозревателя снова созданы.
Панель управления. Раздел находится в элементе Конфигурация пользователя и строится на основе ADM-файла system.adm. С его помощью можно запретить запуск Панели управления, а также всех CPL-файлов, установленных на компьютере. При попытке открытия этих файлов система будет писать о том, что это запрещено администратором. Тем не менее в диалоге с помощью команд rundll32 можно обойти данное ограничение на некоторые CPL-файлы. Например, следующие команды открывают апплеты:
■ rundll32.exe Access.cpl, DebugMain — апплет Специальные возможности (Access.cpl);
■ rundll32.exe firewall.cpl, ShowControlPanel — Брандмауэр Windows (firewall.cpl);
■ rundll32.exe joy.cpl, ShowJoyCPL — Игровые устройства (joy.cpl);
■ rundll32.exe mmsys.cpl, ShowFullControlPanel — апплет Свойства: Звук и аудиоустройства (mmsys.cpl), который также можно вызвать с помощью команд rundll32.exe mmsys.cpl, ShowDriverSettingsAfterFork и rundll32.exe mmsys.cpl, ShowAudioPropertySheet;
■ rundll32.exe netplwiz.dll, UsersRunDll — Учетные записи пользователей;
■ rundll32.exe newdev.dll, WindowsUpdateDriverSearchingPolicyUi — несмотря на запрет на доступ к апплету Свойства системы, открывает диалог Подключение к Windows Update;
■ rundll32.exe TAPI32.dll, internalConfig — апплет Телефон и модем (telephon.cpl), который можно также вызвать с помощью следующей команды: rundll32.exe TAPI32.dll, LOpenDialAsst;
■ rundll32.exe wuaucpl.cpl, ShowAUControlPanel — апплет Автоматическое обновление (wuaucpl.cpl).
Как можно заметить, список таких CPL-файлов, которые можно запустить, несмотря на запрет запуска, довольно велик. По этой причине рекомендуется не использовать данное ограничение административных шаблонов, а напрямую запрещать полный доступ (оставив только доступ на чтение) к ветвям реестра, параметры из которых используются CPL-файлами (как правило, это разделы ветви HKEY_CURRENT_USER\Control Panel).
Теперь рассмотрим некоторые другие ограничения административных шаблонов, которые можно обойти с помощью команд rundll32.
■ Панель управления►Установка и удаление программ — здесь содержатся правила, с помощью которых можно скрыть вкладку Замена или удаление программы илисам апплет Установка и удаление программ. Тем не менее удалить программу все еще можно будет с помощью рассмотренной команды rundll32.exe appwiz.cpl, WOW64Uninstall_RunDLL ,,,«подкаталог программы».
Несмотря на то, что есть запрет скрытия вкладки Добавление и удаление компонентов Windows, с помощью следующей команды: rundll32.exe netshell.dll, HrLaunchNetworkOptionalComponents — можно будет отобразить диалоговое окно Мастер дополнительных сетевых компонентов Windows.
■ Система►Управление связью через Интернет►Параметры связи через Интернет — здесь находятся правила, с помощью которых можно запретить отображение Мастера веб-публикаций. Тем не менее данный мастер все равно можно будет вызвать с помощью команды rundll32.exe NETPLWIZ.dll, PublishRunDll (но только для публикации содержимого папки Мои документы).
■ Сеть►Сетевые подключения — здесь можно запретить доступ к Мастеру новых подключений. Тем не менее данный мастер все равно можно будет вызвать с помощью команды rundll32.exe netshell.dll, StartNCW.
■ Компоненты Windows►Проводник — здесь можно скрыть диалоги подключения и отключения сетевых дисков. Тем не менее вызвать данные диалоги все-таки будет можно. Для этого соответственно применяются команды rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL Connect и rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL Disconnect.
Рассмотрим два ADM-файла.
■ Inetcorp.adm — раньше было сказано, что настройки из данного файла использовались лишь в операционных системах более ранних версий, чем операционная система Windows 2000. Возможно, это не совсем так, поэтому рассмотрим некоторые из параметров реестра, которые изменяются с помощью данного файла. Например, в реестре до сих пор присутствует DWORD-параметр CacheLimit, расположенный в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache\Content. Как говорится в оснастке, данный параметр определяет максимальный размер (в килобайтах), резервируемый для временных файлов Интернета (пользовательского кэша). А в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings содержится параметр строкового типа CodeBaseSearchPath, который, как говорится в файле, хранит путь для поиска документов.
■ Inetset.adm — несмотря на то, что данный ADM-файл по умолчанию не загружается в административные шаблоны, параметры ограничений, записанные в нем, поддерживаются операционной системой Windows XP. Единственным минусом файла является то, что он оставляет «татуировки на реестре». Тем не менее в образовательных целях рассмотрим структуру этого ADM-файла. Как правило, по умолчанию данный ADM-файл находится в каталоге %systemroot%\inf, но если там этого файла нет, то его можно взять из установочного диска Windows XP. Он расположен в каталоге I386 диска и называется INETSET.AD_. По умолчанию все файлы операционной системы на установочном диске для экономии места хранятся в сжатом виде, поэтому для распаковки данного файла необходимо воспользоваться командой expand «путь к файлу и его имя» «путь к каталогу, в который файл будет распакован». При этом перед распаковкой рекомендуется скопировать распаковываемый файл в другой каталог. Можно также распаковать несколько файлов, например команда expand i:\i386\*.ad_ d:\ распакует на диск D: все файлы с расширением AD_, расположенные в каталоге i:\i386. После распаковки файла его расширение AD_ нужно заменить расширением ADM.
Чтобы подключить любой сторонний административный шаблон, необходимо в контекстном меню элемента Административные шаблоны выбрать команду Добавление и удаление шаблонов. После ее вызова перед вами отобразится список уже загруженных ADM-файлов, из которого можно удалить одни файлы (кнопка Удалить) или добавить другие (кнопка Добавить). Для добавления ADM-файла перед запуском консоли Групповая политика также достаточно скопировать ADM-файл в каталог %systemroot%\system32\grouppolicy\Adm — все ADM-файлы из этого каталога загружаются в элемент Административные шаблоны по умолчанию.
После загрузки файла inetset.adm в элемент Административные шаблоны в нем появятся следующие разделы: Автозаполнение, Отображать параметры, Дополнительные параметры, Кодирование URL. Они расположены в элементе Конфигурация пользователя, а в элементе Конфигурация компьютера расположен только один новый раздел — Обновления компонентов. По умолчанию все они пусты. Это и неудивительно, ведь данные административные шаблоны создавались не для Windows XP и делают «татуировки на реестре», поэтому по умолчанию содержимое данных разделов отфильтровывается. Чтобы отобразить диалоговое окно настройки фильтрации, нужно в контекстном меню элемента Административные шаблоны выбрать команду Вид►Фильтрация. После этого перед вами отобразится диалог, с помощью которого можно запретить отображение правил, не удовлетворяющих какой-либо версии Windows. В данном случае в диалоге нужно снять флажок Показывать только управляемые параметры политики (это нужно делать отдельно для элемента Конфигурация компьютера и отдельно для элемента Конфигурация пользователя). После этого все правила, доступные с помощью файла inetres.adm, отобразятся в описанных выше разделах. Здесь не будут рассмотрены названия этих правил — рассмотрим только параметры реестра, которые изменяются этими правилами.
■ HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete — хранит настройки автозаполнения и может содержать следующие параметры строкового типа.
• Append Completion — если значение равно по, то возможность автозаполнения для веб-адресов будет отключена. Если же значение равно yes, то включена.
• Use AutoComplete — при установке значения равным по возможность автозаполнения в Проводнике Windows будет запрещена. Если же значение равно yes, то разрешена.
• AutoSuggest — если значение равно по, то возможность автозаполнения для адресов Сети будет запрещена. Если же значение равно yes, то разрешена.
■ HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main — содержит основные настройки браузера Internet Explorer. Файл inetset.adm позволяет редактировать значения следующих параметров: Use FormSuggest, FormSuggest Passwords, FormSuggest PW Ask, отвечающих за возможности использования автозаполнения форм. За более детальной информацией обращайтесь к базе данных по реестру, поставляемой вместе с книгой.
Но, кроме этих параметров, данный файл определяет и другие.
• Use_DlgBox_Colors — если значение равно yes, то при отображении сайтов будут использоваться цвета Windows.
• Disable Script Debugger — при установке значения равным yes браузер не будет разрешать отладку сценария при ошибке в нем.
• Error Dlg Displayed On Every Error — если значение равно yes, то браузер будет отображать сообщение об ошибке при каждой ошибке сценария.
■ HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Security\P3Global — если данная ветвь реестра будет содержать DWORD-параметр Enabled, равный 1, то редактор профиля будет задействован.
■ HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings — хранит следующие рассматриваемые в файле параметры DWORD-типа.
• WarnOnPostRedirect — если значение равно 1, то при перенаправлении передаваемой пользователем формы браузер будет предупреждать пользователя.
• WarnOnZoneCrossing — при установке значения равным 1 браузер будет предупреждать пользователя о переключении зоны безопасности.
• UrlEncoding — если значение равно 1, то будет задействована возможность посылки адресов в формате UTF8.
■ HKEY_CURRENT_USER\Software\Microsoft\Java VM — хранит настройки консоли Java (помните рассмотренный ранее параметр EnableJavaConsole?). С помощью данного файла можно отредактировать следующие параметры BINARY-типа.
• EnableLogging — если значение равно 1, то возможность протоколирования виртуальной машины Java от Microsoft будет включена.
• EnableJIT — при установке значения равным 1 будет включен компилятор Microsoft Virtual Machine JIT.
■ HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchUrl — если значение параметра строкового типа provider из данной ветви реестра равно INTRANET, то будет использоваться внутренний сервер автопоиска (о настройке возможности автопоиска уже было сказано в разде ле о параметрах реестра, предназначенных для настройки браузера Internet Explorer).
ПРИМЕЧАНИЕ
Описываемый ADM-файл содержит и другие настройки. Эти настройки не были рассмотрены по той причине, что их можно установить и с помощью стандартных диалогов браузера.
На этом будет закончено рассмотрение групповых политик в целом и административных шаблонов в частности. Тем не менее хотелось бы напомнить, что те параметры административных шаблонов, которые были рассмотрены, являются лишь каплей в море возможностей настройки компонентов Windows XP, предоставляемых административными шаблонами. Просто представьте, сколько сотен параметров описано только в двух единственных ADM-файлах system.adm и inetres.adm, если учесть, что они имеют размеры по 1500 Кбайт каждый.
Результирующая политика
Результирующая политика — это новый механизм Windows XP, позволяющий просмотреть общие настройки групповой политики для конкретного пользователя или конкретного компьютера. На данный момент групповые политики содержат около 1000 различных параметров реестра, которые могут перекрывать действия друг друга. Но это не главное. Наиболее сильно проблема усугубляется в домене Active Directory. Стоит лишь вспомнить, что групповые политики для компьютеров, входящих в домен Active Directory, могут определяться сразу на трех уровнях (на уровне локального компьютера, на уровне домена и на уровне организационной единицы), как сразу становится понятно, что порой разобраться в действительных настройках групповой политики для отдельного пользователя бывает довольно сложно. Именно для облегчения работы с подобными групповыми политиками и была разработана оснастка Результирующая политика. Она собирает настройки групповых политик конкретного пользователя сразу на всех трех уровнях Active Directory и выводит общую групповую политику, отображая при этом проблемные правила политики (которые конфликтуют на уровне реестра с другими правилами политики).
При этом в процессе поиска активных групповых политик оснастка использует базу данных WMI. Для получения сведений об ADM-файлах оснастка подключается даже к локальному компьютеру с использованием его сетевого имени (через стандартную скрытую общедоступную папку admin$). Оснастка Результирующая политика имеет GUID-номер {6DC3804B-7212-458D-ADB0-9A07E2AE1FA2}.
Оснастка Результирующая политика входит в стандартную консоль Windows XP gpedit.msc. В процессе запуска этой консоли (а также в процессе ее работы) для протоколирования ошибок используются файлы из каталога %systemroot%\Debug\UserMode, а также идет просмотр ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon. Для работы оснастки Результирующая политика используются следующие параметры DWORD-типа.
■ RSoPLogging — определяет, будет ли выполняться протоколирование результирующих политик на данном компьютере. Если значение данного параметра равно 0, то протоколирование результирующей политики будет отключено. По умолчанию значение равно 1. Параметр может также находиться в ветви HKEY_LOCAL_NACHINE\Software\Policies\Microsoft\Windows\System.
■ GroupPolicyMinTransferRate — определяет порог скорости подключения к компьютеру при использовании результирующих политик или обновлении групповых политик, преодоление которого будет говорить консоли управления Microsoft, что используется медленное подключение. По умолчанию значение данного параметра равно 500. Другими словами, если реальная скорость подключения к компьютеру будет меньше 500 Кбайт/с, то оно будет считаться медленным. Если значение данного параметра равно 0, то все подключения будут считаться быстрыми. Параметр может принимать значения от 0 до 0xFFFFFFA0. Параметр может также находиться в ветви реестра HKEY_LOCAL_NACHINE\SOFTWARE\Policies\Microsoft\Windows\System (а также в ветви корневого раздела HKEY_CURRENT_USER). По умолчанию параметры не существуют.
После открытия консоли отобразится окно, подобное окну консоли Групповая политика. Оно также содержит элементы Конфигурация компьютера и Конфигурация пользователя с вложенными разделами. Но, в отличие от консоли Групповая политика, консоль Результирующая политика включает в себя лишь установленные или отключенные правила групповой политики — правила в состоянии Не задано в консоли Результирующая политика не отображаются. Еще одно отличие консоли Результирующая политика от консоли Групповая политика заключается в том, что первая позволяет лишь просмотреть правила, а не редактировать их.
Как уже говорилось ранее, Результирующая политика позволяет определить проблемные правила — напротив них отображается красный крестик. При этом на вкладке Информация об ошибке диалога Свойства таких вкладок можно определить проблему установки правила.
ПРИМЕЧАНИЕ
В диалоге Свойства можно также определить уровень, к которому принадлежит данное правило. Для этого предназначена вкладка Приоритет.
Шаблоны безопасности
Шаблоны безопасности являются довольно интересной оснасткой, с помощью которой можно создать свой собственный шаблон безопасности или отредактировать уже существующие. Шаблоны безопасности представляют собой файлы, хранящие различные настройки параметров реестра и файловой системы Windows XP. Файлы шаблонов безопасности можно легко импортировать в систему, чтобы настройки, в них содержащиеся, были применены к данному компьютеру.
ПРИМЕЧАНИЕ
Шаблоны безопасности нельзя применить к компьютерам, операционная система которых установлена на дисках, имеющих файловую систему, отличную от NTFS.
Оснастка Шаблоны безопасности не входит ни в одну стандартную консоль, поэтому для получения доступа к ней необходимо воспользоваться консолью управления Microsoft mmc.exe. Оснастка Шаблоны безопасности имеет GUID-номер {5ADF5BF6-E452-11D1-945A-00C04FB984F9}, поэтому если оснастка с таким номером будет запрещена с помощью групповых политик, то вы не сможете запустить Шаблоны безопасности (она просто исчезнет из списка доступных для открытия оснасток).
После открытия оснастки перед вами отобразится окно, подобное приведенному на рис. 11.10.
Рис. 11.10. Окно оснастки Шаблоны безопасности
Оснастка Шаблоны безопасности по умолчанию содержит раздел C: \WINDOWS\security\templates. Этот раздел, в свою очередь, включает в себя набор стандартных шаблонов безопасности. Все отображаемые в оснастке шаблоны безопасности находятся в каталоге файловой системы C:\WINDOWS\security\templates. При этом стоит сказать, что каталог, из которого берутся шаблоны безопасности, не статичен. Другими словами, путь к каталогу можно изменить с помощью реестра (соответственно изменится и название раздела элемента Шаблоны безопасности). Для изменения пути к каталогу шаблонов безопасности необходимо изменить название раздела C:/WINDOWS/security/templates из ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\ SecEdit\Template Locations.
ПРИМЕЧАНИЕ
Вы можете создать и свой собственный раздел в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\SecEdit\Template Locations. Созданный вами раздел будет отображаться в оснастке наряду со стандартным разделом. Чтобы создать новый раздел с помощью механизмов оснастки, нужно выбрать в меню Действие команду Новый путь для поиска шаблонов.
Раздел C:/WINDOWS/security/templates ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\SecEdit\Template Locations может хранить параметр строкового типа Description, определяющий описание содержимого каталога. Это описание отображается в столбце Описание правой панели оснастки.
Все шаблоны безопасности, отображенные в оснастке, изменяют одни и те же параметры файловой системы и реестра (просто каждый шаблон устанавливает свои собственные значения этих параметров), поэтому сначала будут подробно рассмотрены изменяемые шаблонами параметры, а потом отличия в значениях этих параметров для разных шаблонов безопасности. Для рассмотрения параметров воспользуемся шаблоном безопасности Setup security. Он используется сразу после установки операционной системы Windows XP для настройки доступа к файловой системе компьютера и ветвям реестра по умолчанию.
ПРИМЕЧАНИЕ
Шаблоны безопасности являются обычными файлами с расширением INF, расположенными в каталоге C:/WINDOWS/security/templates (по умолчанию). При этом название INF-файла используется в оснастке Шаблоны безопасности как название шаблона. Другими словами, шаблон Setup security является INF-файлом с именем Setup security.inf.
Содержимое шаблонов безопасности
Все шаблоны безопасности содержат следующие разделы: Политики учетных записей, Локальные политики, Журнал событий, Группы с ограниченным доступом, Системные службы, Реестр и Файловая система. Вкратце рассмотрим каждый из этих разделов.
Политики учетных записей
Раздел Политики учетных записей по умолчанию содержит три политики. Это Политика блокировки учетной записи, Политика паролей и Политика Kerberos.
■ Политика паролей — с ее помощью можно настроить параметры создания паролей для учетных записей пользователей компьютера, а также определить параметры хранения паролей пользователей. Для этого применяются следующие правила.
ПРИМЕЧАНИЕ
Скорее всего, все приведенные ниже правила хранятся в ветви системного реестра HKEY_LOCAL_MACHINE\SECURITY.
• Максимальный срок действия пароля — указывает количество дней, в течение которого будут действовать пароли пользователей. По истечении указанного срока пользователи должны сменить пароль. Для шаблона безопасности Setup security это правило равно 42 дням.
• Минимальная длина пароля — определяет, из какого количества символов должен состоять (как минимум) создаваемый пароль, чтобы система раз
решила его использование. Для шаблона безопасности Setup security это правило равно 0.
• Минимальный срок действия пароля — указывает количество дней, которое должно истечь, чтобы пользователь смог сменить пароль. Если указанное количество дней не истекло, то пользователю будет запрещено изменять пароль. Значение данной политики должно быть меньше значения политики Максимальный срок действия пароля. Для шаблона безопасности Setup security это правило равно 0.
• Пароль должен отвечать требованиям сложности — если данное правило установлено, то система не разрешит создание паролей, состоящих только из цифр или только из букв. При использовании данного правила все пароли должны содержать не меньше шести символов, находящихся в разных регистрах, а также не принадлежащих к алфавитно-цифровой клавиатуре (например, символы «&», «$», «!»). Для шаблона безопасности Setup security это правило отключено.
• Требовать неповторяемости паролей — значение данного правила определяет количество паролей, которые должны быть добавлены в базу данных SAM (содержит хэши паролей всех учетных записей пользователей), после чего система разрешит в качестве пароля задать уже использовавшийся ранее пароль. Для шаблона безопасности Setup security это правило равно 0 паролей.
• Хранить пароли всех пользователей в домене, используя обратимое шифрование — если данное правило будет включено, то система будет создавать пароли пользователей с возможностью их расшифровки (так называемое обратимое шифрование). Создание паролей с возможностью их расшифровки может потребоваться некоторым приложениям для аутентификации пользователя (например, это необходимо протоколу CHAP). Но перед установкой этого правила следует учесть, что такой способ хранения паролей резко снижает уровень безопасности компьютера. Для шаблона безопасности Setup security это правило отключено.
■ Политика блокировки учетной записи — с помощью данной политики можно определить правила поведения системы в случае нескольких попыток неудачного ввода пароля при аутентификации пользователя.
• Блокировка учетной записи на — определяет количество минут, на которое будет выполняться блокировка учетной записи после нескольких попыток неудачного ввода пароля. Значение может находиться в диапазоне от 1 до 99999 (если значение равно 0, то учетная запись будет заблокирована до тех пор, пока администратор компьютера ее не разблокирует самостоятельно). Для шаблона безопасности Setup security это правило не определено.
• Пороговое значение блокировки — указывает количество попыток неверного ввода пароля, после которых учетная запись будет заблокирована. Возможные значения лежат в пределах от 0 до 999. Для шаблона безопасности Setup security это 0 ошибок.
• Сброс счетчика блокировки через — определяет количество минут, по истечении которых счетчик неверных попыток ввода пароля будет обнулен. Значение может находиться в пределах от 1 до 99999. Для шаблона безопасности Setup security это правило не определено.
■ Политика Kerberos — определяет настройки протокола Kerberos, используемые при входе пользователя в систему. В контексте данной книги настройки данной политики рассмотрены не будут, так как они относятся к компьютерам, находящимся в домене, а это большая редкость на домашних компьютерах.
Локальные политики
Раздел Локальные политики содержит три политики: Политика аудита, Назначение прав пользователя и Параметры безопасности.
■ Политика аудита — позволяет определить события, факты происхождения которых будут записываться в журнал Безопасность оснастки Просмотр событий. Можно указать запись в журнал Безопасность сведений об успешных или неудачных попытках выполнения следующих операций: вход в систему, доступ к объектам, имеющим собственный SACL (например, к принтерам, файлам, папкам), доступ к каталогам Active Directory и других. Для шаблона безопасности Setup security все события аудита, кроме аудита доступа к службе каталога (этот аудит не определен), отключены.
■ Назначение прав пользователя — с помощью данной политики можно определить права различных пользователей или групп пользователей на выполнение различных операций с объектами и компонентами операционной системы. Например, с помощью этой политики можно определить пользователей, которым разрешено входить локально в систему, разрешено входить в систему через службу терминалов, разрешено выполнять архивирование файлов и каталогов и т.д.
■ Параметры безопасности — с помощью данной политики можно настроить очень многие параметры реестра, относящиеся к безопасности компьютера. Довольно часто в Интернете можно прочитать советы об изменении тех или иных параметров реестра, настраивающих безопасность компьютера. Многие из параметров, указанных в таких советах, можно изменить и с помощью политики Параметры безопасности. Например, к наиболее часто упоминаемым в Интернете способам настройки безопасности с помощью реестра, которые также можно изменить и с помощью политики Параметры безопасности, относятся следующие.
• Очистка файла подкачки pagefile.sys при завершении работы компьютера. Для шаблона Setup security данное правило отключено.
• Сообщение, отображаемое перед входом пользователя в систему. Для шаблона Setup security данное правило не определено.
• Посылать незашифрованный пароль сторонним SMB-серверам. Для шаблона Setup security данное правило отключено.
• Запретить изменение паролей учетных записей пользователей. Для шаблона Setup security данное правило не определено.
• Пути в реестре, доступные через удаленное подключение. Для шаблона Setup security данное правило не определено.
• Разрешить анонимный доступ к общим ресурсам. Для шаблона Setup security данное правило не определено.
• Отключение или переименование учетных записей администратора и гостя. Для шаблона Setup security эти правила не определены (кроме отключения учетной записи гостя, по умолчанию эта запись отключена).
При этом большинство правил списка Параметры безопасности хранятся в реестре (то есть вы и сами можете добавить к данному списку свои правила изменения параметров реестра, чтобы изменять их с помощью шаблона безопасности). Для этого предназначена ветвь реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SeCEdit\Reg Values. Она содержит разделы, названия которых соответствуют пути к изменяемому правилом параметру реестра (данный путь должен начинаться не с корневого раздела ветви, а с класса, в котором хранится объект операционной системы (операционная система Windows XP является объектно-ориентированной), например класс Machine определяет корневой раздел HKEY_LOCAL_MACHINE). Эти разделы хранят следующие параметры.
■ DisplayChoices — этот параметр строкового типа определяет описание возможного состояния правила (если для установки правила используется список состояний), а также значение, которое будет присваиваться параметру при установке соответствующего состояния правила.
■ DisplayName — параметр строкового типа, определяет название правила, отображаемое в списке политики Параметры безопасности.
■ DisplayType — этот параметр DWORD-типа определяет способ указания состояния правила. Параметр может принимать следующие значения:
• 1 — отобразить счетчик для указания состояния правила;
• 2 — поле для ввода значения;
• 3 — раскрывающийся список (для выбора возможного состояния из списка);
• 4 — список для выбора состояния;
• 6 — два флажка, с помощью которых можно включить или отключить правило.
■ ValueType — этот параметр DWORD-типа определяет тип изменяемого данным правилом параметра реестра. Возможные значения:
• 1 — строковый тип параметра;
• 3 — тип параметра REG_BINARY;
• 4 — тип параметра REG_DWORD;
• 7 — тип параметра REG_MULTI_SZ.
На рис. 11.11 можно видеть пример описания правила в реестре.
Рис. 11.11. Хранение правил политики Параметры безопасности
Журнал событий
С помощью данной политики можно настроить параметры стандартных журналов системы, доступ к которым можно получить с помощью оснастки Просмотр событий. Например, с помощью данной политики можно определить максимальные размеры файлов стандартных журналов системы, количество дней хранения этих файлов, а также запретить или разрешить просмотр системных журналов для учетной записи Гость. Все параметры реестра, изменяемые этой политикой, уже были рассмотрены в разделе о настройках оснастки Просмотр событий.
Группы с ограниченным доступом
С помощью данной политики можно добавить в группу временного пользователя (для повышения его прав на некоторое время). При этом после перезагрузки данный пользователь будет удален из группы. Тем самым администратор может делегировать на время права некоторым пользователям, не заботясь о снятии делегированных прав с пользователя — это выполнит система. Для добавления временного пользователя в группу нужно создать саму группу, в которую будет добавляться пользователь. Для этого нужно в контекстном меню раздела Группы с ограниченным доступом выбрать команду Добавить группу. После этого система предложит вам ввести или выбрать из списка группу, а затем предложит добавить в нее новых пользователей.
Системные службы
С помощью данной политики можно указать тип запуска служб, установленных на компьютере, или вообще отключить запуск некоторых служб.
Реестр
С помощью данного раздела можно указать права доступа к различным ветвям реестра. Чтобы указать права доступа к ветви реестра, необходимо сначала добавить в данный раздел ветвь реестра. Для этого необходимо в контекстном меню раздела Реестр выбрать команду Добавить раздел. После этого консоль управления Microsoft предложит вам указать права для доступа к данной ветви реестра.
Файловая система
С помощью этого раздела можно указать права доступа к различным каталогам файловой системы Windows XP. Чтобы указать права доступа к каталогу, необходимо сначала добавить в раздел Файловая система путь к каталогу. Для этого необходимо в контекстном меню раздела выбрать команду Добавить файл. После этого консоль управления Microsoft предложит вам указать права для доступа к данному каталогу или файлу, а затем определить, будут ли указанные вами права распространяться на все вложенные в каталог папки.
Стандартные шаблоны безопасности
Теперь рассмотрим другие стандартные шаблоны безопасности и их отличие от шаблона по умолчанию.
Compatws.inf
Настройки шаблона по умолчанию ограничивают группу Пользователи, запрещая ей доступ ко многим ветвям реестра и каталогам файловой системы. Вдобавок к группе Пользователи шаблон по умолчанию создает группу Опытные пользователи, обладающую большими правами в операционной системе. Создание двух разных групп необходимо для повышения безопасности. Тем не менее не рекомендуется использовать группу Опытные пользователи, так как она в системе имеет очень многие права, которые можно использовать не только на благо, но и во вред. В частности, пользователи из группы опытных имеют больше шансов осуществить различные методы взлома, направленные на получение прав администратора или системы.
Хотя в некоторых случаях без применения группы Опытные пользователи обойтись нельзя. В частности, когда пользователи компьютера должны иметь права на установку программ, не сертифицированных для Microsoft. Такие программы используют для своей установки ветви реестра и каталоги файловой системы, доступ к которым закрыт для обычных пользователей. Если необходимо, чтобы пользователи могли устанавливать такие программы, то желательно применять шаблон безопасности Compatws, а не группу Опытные пользователи. Данный шаблон разрабатывался для предоставления группе Пользователи специальных прав, которых достаточно для установки большинства программ. При этом другие права, доступные группе Опытные пользователи, группе Пользователи не передаются, то есть в остальном группа Пользователи остается ограниченной. При установке шаблона Compatws все члены группы Опытные пользователи удаляются из нее, и ей предоставляются следующие права на каталоги файловой системы.
■ %programfiles% — чтение/запись/чтение и выполнение/список содержимого файлов/изменение.
■ %systemroot%\downloaded program files — чтение/запись/чтение и выполнение/список содержимого файлов/изменение.
■ %systemroot%\temp — чтение/запись/чтение и выполнение/список содержимого файлов/изменение.
■ %systemroot%\sysvol — права не определены ни для одной из групп.
Шаблон безопасности Compatws также изменяет права на ветви реестра из корневого раздела HKEY_CLASSES_ROOT. Но в данном случае скорее происходит не повышение прав группы Пользователи на содержимое данной ветви, а понижение прав группы Опытные пользователи, чтобы они не могли выполнять запись в данный корневой раздел реестра.
Securews.inf
Настройки этого шаблона повышают общую безопасность рабочей станции. Существует также шаблон безопасности securedc, выполняющий аналогичные действия для контроллера домена. В контексте данной книги будет рассмотрен шаблон securewc, так как второй шаблон предназначен для компьютеров, находящихся в домене и являющихся контролерами доменов, что довольно редко на домашних компьютерах. Итак, основные отличия шаблона securewc от шаблона по умолчанию заключаются в следующем.
■ Минимальная длина пароля 8 символов.
■ Минимальный срок действия пароля 2 дня.
■ Пароль должен отвечать требованиям безопасности.
■ Требование неповторяемости 24 последних паролей.
■ Блокировка учетной записи на 30 минут.
■ Пороговое значение ошибок ввода пароля равно 5.
■ Сброс счетчика блокировки через 30 минут.
■ Выполняется аудит следующих событий: неправильный ввод пароля при входе в систему, аудит всех событий входа в систему и управления учетными записями, а также любое изменение политик и отказ системы в предоставлении привилегий учетной записи пользователя.
■ Изменений в доступе к реестру и файловой системе нет. Изменения в параметрах безопасности не рассматриваются, хотя если кратко, то они в основном заключаются в отказе от протоколов аутентификации LM и NTLM.
Hisecws.inf
Данный шаблон определяет повышенный уровень безопасности рабочей станции. Как и предыдущие два шаблона, он имеет своего двойника, предназначенного для настройки повышенного уровня безопасности контроллера домена (Hisecdc). Основные отличия шаблона Hisecws от шаблона securewc заключаются в следующем.
■ Блокировка учетной записи на 0 минут (то есть до ее явной разблокировки администратором).
■ Аудит всех событий безопасности, кроме событий отслеживания процессов (отключен) и событий доступа к службе каталогов Active Directory (не определен).
■ Изменений в доступе к реестру и файловой системе нет. Изменения параметров безопасности в основном заключаются в требовании подписывания передаваемых по сети данных.
Rootsec.inf
Данный шаблон безопасности служит лишь одной цели — присвоению прав доступа к системному диску по умолчанию. Именно этот шаблон применяется для настройки прав на доступ к системному диску при установке операционной системы.
Notssid.inf
Данный шаблон безопасности предназначен лишь для исключения доступа учетной записи Terminal Server к файловой системе и реестру Windows XP. Если сервер терминалов не используется, то можно применить данный шаблон безопасности для исключения SID сервера терминалов из прав доступа к объектам системы, хотя, как подчеркивает Microsoft, присутствие SID сервера терминалов никоим образом не влияет на безопасность компьютеров.
Создание и импортирование шаблона безопасности
Теперь для примера попробуем создать свой собственный шаблон безопасности. Как правило, для этого лучше воспользоваться одним из стандартных шаблонов, а не создавать шаблон с нуля.
Создание шаблона безопасности
Чтобы создать шаблон безопасности на основе любого другого шаблона, необходимо в контекстном меню шаблона выбрать команду Сохранить как. Затем консоль управления Microsoft предложит вам указать имя нового шаблона, после чего он отобразится в дереве оснастки Шаблоны безопасности. Существует также возможность копирования отдельных разделов шаблона в другой шаблон. Для этого необходимо в контекстном меню раздела эталонного шаблона выбрать команду Копировать. После этого в контекстном меню того же раздела, но шаблона-приемника нужно выбрать команду Вставить.
Например, чтобы быстро создать шаблон на основе шаблона Securews, но с настройками файловой системы из шаблона Rootsec, необходимо сначала создать шаблон на основе шаблона Securews (команда Сохранить как), а после этого скопировать раздел Rootsec►Файловая система в раздел Файловая система созданного вами шаблона. После этого можно самостоятельно отредактировать состояние отдельных правил политик созданного вами шаблона.
ПРИМЕЧАНИЕ
Не рекомендуется изменять состояния правил непосредственно в стандартных шаблонах. Лучше для этого создать новый шаблон на основе одного из стандартных.
Импортирование шаблона безопасности
Шаблон безопасности создан. Но что теперь с ним делать? Для ответа на данный вопрос можно воспользоваться либо оснасткой Групповая политика, либо оснасткой Анализ и настройка безопасности. Можно также воспользоваться командой командной строки secedit.exe.
■ Групповая политика — когда рассматривалась оснастка Групповая политика, были пропущены такие ее разделы, как Политики учетных записей и Локальные политики. Теперь вы знаете, что хранится в этих разделах, а также умеете создавать свои собственные шаблоны. Если вы уже создали свой шаблон с изменениями состояния правил данных разделов, то существует возможность его импортирования в групповую политику, чтобы настройки из шаблона применялись вместе с настройками групповой политики. Для этого необходимо в контекстном меню элемента Параметры безопасности консоли Групповая политика выбрать команду Импорт политики. После этого консоль управления Microsoft попросит указать путь к шаблону безопасности и использует его содержимое для настройки разделов Политики учетных записей и Локальные политики. При этом остальные настройки шаблона безопасности применяться не будут.
■ Анализ и настройка безопасности — с помощью данной оснастки можно не только применить к компьютеру любой созданный шаблон (в отличие от Групповой политики оснастка использует все содержимое шаблона, а не только настройки разделов Политики учетных записей и Локальные политики), но и проанализировать текущие настройки компьютера с настройками из шаблона безопасности. Оснастка Анализ и настройка безопасности имеет GUID-номер {011BE22D-E453-11D1-945A-00C04FB984F9}. После ее добавления к консоли управления Microsoft в дереве консоли отобразится единственный элемент — Анализ и настройка безопасности. Если вы раньше никогда не использовали данную оснастку, то перед началом работы с ней необходимо создать базу данных текущих настроек безопасности компьютера. Для этого в контекстном меню оснастки необходимо выбрать команду Открыть базы данных и в отобразившемся диалоге ввести имя новой базы данных. После этого консоль управления Microsoft предложит указать имя шаблона безопасности, настройки которого будут импортированы в созданную базу данных (если вы используете уже существующую базу, то можно очистить ее содержимое перед импортом настроек шаблона безопасности).
ПРИМЕЧАНИЕ
Несмотря на то, что создаваемая база данных хранит информацию о настройках компьютера в неудобном для чтения виде, тем не менее злонамеренные пользователи смогут ее использовать для анализа текущих настроек безопасности компьютера.
После создания или открытия базы данных настроек шаблона в контекстном меню оснастки станут доступными команды Анализ компьютера и Настроить компьютер.
Если вы хотите только определить, соответствуют ли текущие настройки безопасности настройкам, содержащимся в открытой базе данных шаблона безопасности, то необходимо воспользоваться командой Анализ компьютера. После этого консоль управления Microsoft предложит вам указать путь к текстовому файлу, в который будет записан журнал процесса анализа компьютера. Затем в дереве оснастки отобразятся разделы, аналогичные разделам шаблонов безопасности. Эти разделы будут хранить описание текущего состояния (на вашем компьютере) установленных в шаблоне безопасности правил. Если текущие настройки состояния правила на вашем компьютере соответствуют настройкам из шаблона, то напротив правила будет установлен зеленый флажок. Если же настройки состояния правила в шаблоне безопасности отличаются от текущих настроек на вашем компьютере, то напротив соответствующего правила будет установлен красный крестик (рис. 11.12).
Рис. 11.12. Анализ текущей настройки безопасности компьютера
Чтобы установить настройки компьютера в соответствии с настройками из открытой базы данных, необходимо выбрать команду Настроить компьютер. После этого консоль управления Microsoft также предложит вам указать путь к текстовому файлу, используемому для хранения журнала процесса настройки компьютера.
С помощью команды Secedit.exe можно выполнить как настройку и создание шаблонов безопасности, так и анализ текущих настроек компьютера на основе шаблона безопасности или применение шаблона безопасности. Если работа с данной программой заинтересовала вас, то предлагаю воспользоваться стандартной справкой по данной программе, которую можно открыть с помощью команды secedit.exe /?.
Часть 4