Три способа внесения изменений в реестры компьютеров по сети

Существует три способа изменения реестра через сеть: импорт файлов данных реестра (.reg), использование regini.exe, а также применение групповых или системных политик.

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

Прежде чем приступить к работе, можно в качестве меры предосторожности экспортировать раздел с помощью regedit.exe. Экспортированный файл имеет расширение .reg. Импортировав его назад в реестр, можно быстро исправить ошибки, возникшие в результате манипуляций с разделом. Даже тем пользователям, которые предпочитают работать с regedt32, следует сначала открыть regedit и экспортировать изменяемый раздел. Функции экспорта и импорта regedit проще в использовании, нежели аналогичные процедуры резервного копирования regedt32.

Многие ограничения для пользователей и компьютеров можно ввести с помощью редакторов групповой политики Group Policy Editor (GPE - в Windows 2000) или системной политики System Policy Editor (SPE - в Windows NT и Windows 9x). Однако в данной статье я исхожу из того, что с помощью этих ресурсов сделать нужные изменения нельзя и требуется подстройка реестра.

Вариант 1. Создание или экспорт файлов реестра

Можно распространить файлы .reg, чтобы пользователи впоследствии импортировали их в реестры целевых компьютеров. Все, что нужно сделать, - это создать или экспортировать с помощью regedit, затем отредактировать файлы .reg, а потом распространить их. Файлы реестра имеют один серьезный недостаток: с их помощью нельзя удалять элементы реестра. Более подробно об этом ограничении рассказано во врезке «Недостаток файла реестра». Информация в файле реестра представлена в следующем формате:


[]
""=":
"

RegistryEditorVersion - используемая версия редактора regedit.exe. Данный элемент идентифицирует файл в качестве файла реестра. Regedit автоматически добавляет эту информацию в процессе экспорта reg-файла, но при создании reg-файла данные необходимо ввести вручную. При работе с Windows 2000 в элемент RegistryEdi-torVersion записывается значение Win-dows Registry Editor Version 5.00; версия для NT 4.0 требует RegEdit4. Пустая строка указывает на начало нового пути реестра. Каждый индивидуальный раздел или подраздел - новый путь реестра. При экспорте раздела в reg-файл вводится пустая строка перед каждым разделом или подразделом. Если в reg-файле содержится несколько разделов, то по пустым строкам проще исследовать и отыскивать ошибки. В документации утверждается, что пустая строка необходима. Однако reg-файлы, в которых пустые строки были случайно забыты, удавалось успешно вставить в реестр.

RegistryPath - путь к разделу, содержащему импортируемые параметры. Путь следует заключить в квадратные скобки, отделив каждый уровень иерархии обратной косой чертой, например [HKEY_LOCAL_MACHINESOFTWARE PoliciesMicrosoft WindowsSystem]. Reg-файл может содержать несколько путей реестра.

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

DataItemName - элемент данных, который нужно импортировать. Если элемента данных файла в реестре нет, то reg-файл добавляет его (вместе со значением). Если элемент данных существует, то старое значение заменяется величиной из reg-файла. Имя элемента данных указывается в кавычках. Сразу за именем элемента данных ставится знак равенства (=).

DataType - тип данных импортируемого элемента - следует сразу же за знаком равенства, если только данные не принадлежат к типу REG_SZ (элементы типа REG_SZ - строки). Для всех типов данных, отличных от REG_SZ, сразу вслед за типом данных ставится двоеточие. В Таблице 1 показаны элементы пяти распространенных типов данных. Существует девять типов данных, но для системного обслуживания, скорее всего, понадобятся лишь типы, указанные в Таблице 1. Более подробно об этих типах данных рассказано во врезке «Типы данных реестра».

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

"GroupPolicyRefreshTime"=dword:
00000014
"GroupPolicyRefreshTimeOffset"=
dword:0000000f

задают шестнадцатеричные величины, необходимые для этих элементов данных: 00000014 соответствует десятичному числу 20, а 0000000f - десятичному числу 15. Пользователям, не привыкшим иметь дело с шестнадцатеричными и другими трудночитаемыми данными, следует исключить из набора элементов reg-файла двоичный и шестнадцатеричный форматы.

В реестре нет булева типа данных (хотя он должен быть, и трудно поверить, что разработчики Microsoft еще не убедились в его необходимости). Однако булев тип данных обычно представлен в реестре элементом типа DWORD (четыре байта) или String (два байта). Если изменение величин производится с помощью reg-файла, то следует убедиться в соответствии типов данных элементов реестра и reg-файла. В reg-файле не обязательно указывать полную строку; начальные нули всех числовых величин можно опустить.

Экран 1. Образец reg-файла.

На Экране 1 показан пример reg-файла, который можно использовать для удаления элемента Documents из меню Start. Большинство пользователей, скорее всего, не будут сожалеть об отсутствии Documents и даже не заметят его исчезновения. Если сотрудник захочет сохранить меню Documents, то ему посылать файл не следует.

Распространение файлов реестра

Чтобы быстро подготовить reg-файл для распространения, нужно использовать regedit для экспорта раздела (или нескольких разделов), а потом задействовать результирующий reg-файл (или файлы). Чтобы экспортировать раздел, следует отметить его и выбрать пункты меню Registry, Export Registry File. В диалоговом окне Export Registry File нужно ввести имя и выбрать папку для экспортируемого файла. Windows автоматически добавляет расширение .reg. Параметры реестра можно вручную изменить на одном компьютере, затем экспортировать раздел и воспользоваться получившемся экспортным файлом, или экспортировать раздел, а потом вручную отредактировать его. Для редактирования reg-файла нужно не дважды щелкать на нем, а выбрать пункт Edit из контекстного меню. Файл открывается в программе Notepad. Чтобы внести изменения сразу в несколько разделов реестра, необходимо открыть каждый reg-файл, вставить информацию из файлов в один документ Notepad и сохранить этот документ с расширением .reg.

Распространять reg-файлы можно любым удобным способом. Можно присоединить reg-файл к почтовому сообщению, добавить соответствующую команду к сценарию регистрации или воспользоваться другим методом. Не нужно открывать regedit и переносить данные из reg-файла в реестр с помощью команды Import; чтобы автоматизировать процедуру импорта, достаточно дважды щелкнуть на reg-файле в Windows Explorer или My Computer. Если щелкнуть на reg-файле правой кнопкой мыши, то можно увидеть, что по умолчанию выполняется операция Merge (объединить). Но ни в одной версии Windows нет команды Merge; эта команда заменяет команду

regedit.exe "%1"

в которой переменная использует текущий файл. Синтаксис команды при запуске из командной строки:

regedit .reg

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

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

regedit/s .reg

Файлы реестра могут использоваться в Windows 95 и более поздних версиях. Однако многие подразделы и элементы данных реестра различаются от версии к версии, поэтому приходится создавать отдельные reg-файлы для каждой платформы. Именовать их следует так, чтобы впоследствии не перепутать (например, RestrictUsers9x.reg, RestrictUsersNT4.reg).

Нужно иметь в виду, что метод reg-файлов работает даже в том случае, если инструменты редактирования реестра отключены через групповую или системную политику. В противном случае было бы невозможно манипулировать реестром, устанавливая программы и выполняя другие системные задания.

Вариант 2. Использование возможностей regini.exe

Сторонники конфигурирования и установки программ с помощью сценариев могут редактировать реестр, используя утилиту regini.exe. Regini - более мощный инструмент, нежели reg-файлы, с ее помощью можно удалять подразделы и элементы данных, а также назначать полномочия для разделов реестра. Regini можно найти в комплектах ресурсов Microsoft Windows 2000 Server Resource Kit и Microsoft Windows NT Server 4.0 Resource Kit. Я пробовала работать с версией regini.exe для Windows 2000 на машинах NT, и наоборот: впечатления благоприятные. В комплекты ресурсов входит и полная документация (regini.doc) для этой первоклассной утилиты. Синтаксис запуска команды следующий:

regini 

где ScriptFileName - путь к файлу сценария, составленного для конкретной операции редактирования. Если сценарий размещен на разделяемом сетевом диске, то в записи пути можно использовать имя в формате Uniform Naming Convention (UNC).

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

Net use x: 	ools1
eskit
x:
egini 
Net use x: /delete

Рекомендации по подготовке файла сценария

Файл сценария, используемый совместно с Regini, может иметь любое имя и расширение. Он должен иметь формат ANSI; при считывании файла regini.exe преобразует его в формат Unicode, но текстовый файл в Unicode нельзя использовать в качестве сценария. Microsoft должна устранить это ограничение. Команды реестра в данном файле сценария имеют следующий синтаксис:

Registry []
 =  

Наличие знака равенства указывает на то, что в строке содержится элемент данных реестра и добавляемое, изменяемое или удаляемое значение.

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

Something
Morestuff 
Evenmore

то regini.exe читает строку как SomethingMorestuff Evenmore. При наличии пробела перед обратной косой чертой на второй строке вставляется пробел между Morestuff и Even-more. Если пробел не нужен (т. е. точка перехода не является естественным разрывом, таким, как пробел в имени подраздела), то пробел перед обратной косой чертой следует опустить.

В первой строке каждой команды реестра содержится переменная KeyPath, указывающая полный путь к обрабатываемому разделу. Если при запуске сценария такого раздела в реестре не существует, то он добавится. Regini.exe использует сокращенные имена ветвей реестра; в сценарии можно указывать сокращенные имена или стандартные имена ветвей, возложив их трансляцию на regini.exe. Сокращенные имена легче вводить с клавиатуры. Сокращенные имена ветвей имеют следующий вид:

? HKEY_LOCAL_MACHINE - Registry
Machine
? HKEY_USERS - RegistryUser
? HKEY_CURRENT_USER - Registry
UserUser_SID

В первой строке команды может находиться и необязательная переменная ACL (Access Control List - список управления доступом). Ее можно использовать для работы с полномочиями ACL вместо указания разделов и элементов данных или наряду с ними. Данные ACL размещаются следом за переменной KeyPath и состоят из набора чисел, разделяемых пробелами и заключенных в квадратные скобки. Эти числа и их значения приведены в Таблице 2. Например, команда

Registrymachinesystem
currentcontrolset 
[1 11 17]

назначает права доступа Administra-tors Full Access, Power Users Full Access и System Full Access к подразделу реестра HKEY_LOCAL_MACHINESYSTEM CurrentControlSet. Предупреждение: прежде чем задействовать данную функцию, необходимо понять, как она работает. Функция не добавляет полномочия ACL, указанные в квадратных скобках, - происходит сброс параметров ACL. Данные из скобок вызывают замену любых существующих данных. Функцией не следует пользоваться, предварительно не проверив права ACL для соответствующего раздела. Просмотреть ACL можно с помощью regedt32. В противном случае по ошибке могут быть изменены или уничтожены полномочия для группы.

Во второй строке содержится информация об изменяемом элементе данных: DataItemName - имя элемента данных, состоящее из всех символов, начиная с первого непустого символа строки и кончая последним непустым символом перед знаком равенства. Для элементов данных, содержащих пробелы, не нужен специальный формат (например, заключение имени в кавычки). Если при запуске сценария элемент данных в реестре отсутствует, то он будет вставлен.

DataType - тип элемента данных. Regini воспринимает текст справа от знака равенства до первого пробела как тип данных.

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

Regini.exe предполагает, что тип данных и значение в сценарии соответствуют определенным стандартам. Эти стандарты следующие:

  • REG_SZ или REG_EXPAND_SZ для строковых значений;
  • REG_MULTI_SZ для нескольких строк. Каждая строка должна быть заключена в кавычки;
  • REG_DWORD для десятичных и шестнадцатеричных значений. По умолчанию для элементов данных REG_DWORD принимается десятичное значение. Шестнадцатеричное значение начинается символами 0x. Если вводится значение On, True или Yes, то оно преобразуется в 0x00000001; значения No, False или Off преобразуются в 0x00000000;
  • REG_BINARY для двоичных величин, представленных в виде двух или нескольких десятичных чисел. Первое десятичное число указывает число байт данных, идущих следом. Оставшиеся числа преобразуются в 32-разрядные числа. Длина величины всегда должна быть кратна четырем.

Возможности Regini

Regini располагает рядом функций для манипулирования данными. Например, DELETE - ключевое слово regini.exe, для которого нужно лишь имя элемента данных. Чтобы удалить элемент данных, во второй (содержащей элемент данных) строке сценария необходимо использовать следующий синтаксис:

DataItemName = DELETE

Другая функция regini.exe позволяет указать текстовый файл, содержащий значения элементов данных. В результате прямо вводить длинные двоичные значения (для элементов REG_ MULTI_SZ) не требуется. В процессе выполнения сценария regini.exe открывает целевой файл и записывает из него информацию в реестр в качестве значения элемента данных. Чтобы воспользоваться этой функцией, нужно заменить тип элемента командой обращения к файлу. В команде содержится ссылка на тип элемента и используются следующие синтаксические правила:

  • для элементов данных REG_BINARY: DataItemName = REG_BINARYFILE FilePath;
  • для элементов данных REG_MUL-TI_SZ: DataItemName = REG_MUL-TISZFILE FilePath.

Например, если ввести в сценарий:

UserNicknamesForCompanyNewsletter =
REG_MULTISZFILE myscripts
script101.txt

то Regini прочитает содержимое файла с именем script101.txt и запишет его в элемент данных UserNicknames-ForCompanyNewsletter. Этот элемент данных взят в качестве примера.

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

egistrymachinesoftwaremicrosoft
windowscurrentversionpoliciessystem
DontDisplayLastUserName = REG_DWORD 1

Чтобы внести дополнительные изменения в этот подраздел, нужно лишь добавить строки вслед за строкой, в которой содержится ссылка на подраздел. Если в каждой дополнительной строке содержится знак равенства, то regini.exe корректно обрабатывает эти строки. Например, элемент данных для управления сообщениями, появляющимися перед регистрацией (LegalNoticeText и LegalNotice-Caption), находится в том же подразделе реестра, что и элемент Dont-DisplayLastUserName. Чтобы компьютер отображал сообщение перед регистрацией пользователей, достаточно добавить к предыдущему сценарию две строки:

egistrymachinesoftwaremicrosoft
windowscurrentversionpoliciessystem
DontDisplayLastUserName = REG_DWORD 1
LegalNoticeText = REG_SZ Your E-Mail
 is Now Being Monitored
LegalNoticeCaption = REG_SZ Notice
 To Employees

Вариант 3. Применение политик

Изменения реестра можно распространять с помощью системных политик, модифицирующих реестры целевых пользователей. В Windows 2000 и прежних версиях операционной системы эта процедура выполняется по-разному (используются оснастка GPE консоли управления Microsoft Management Console и оснастка SPE, соответственно), но в любом случае создаются административные (adm) файлы для пересылки изменений в избранные компьютеры.

Самый простой способ создать adm-файл - использовать в качестве отправной точки adm-шаблон. Шаблоны - текстовые файлы, которые можно открыть в Notepad или любом текстовом редакторе. Прежде чем выполнять какие-либо операции с шаблонами, нужно сделать их копии. Изменяя шаблон, следует сохранить новую версию с новым именем, даже если имеется резервная копия оригинала. А прежде, чем внедрять свое творение на предприятии, необходимо испытать новые adm-файлы в лабораторной среде.

Безусловно, чтобы изменить реестр с помощью adm-шаблона, нужно знать, к какому разделу реестра обращаться. Документация по реестру в комплекте ресурсов весьма скудна. Чтобы освоить операции с реестром, я экспериментировала и вносила изменения в лабораторной среде с помощью политик и панели управления. Для отслеживания изменений в реестре я использовала утилиту regmon.exe фирмы Sysinternals (ее можно получить по адресу: http://www.sysinternals.com). В конце концов, мне удалось освоить методы работы с реестром и разобраться в типах данных элементов реестра.

Создание adm-файлов с помощью Windows 2000 GPE

Оснастка GPE для Windows 2000 располагает сотнями политик, а в SPE их менее 100. Имеющиеся в распоряжении пользователя категории политик показаны на Экране 2.

Экран 2. Оснастка GPE в Windows 2000.

Только политики, расположенные под узлами Administrative Templates, напрямую влияют на элементы реестра; просмотр и изменение этих шаблонов могут стать основой для изменения реестра. Существующие политики охватывают почти все возможные параметры и привилегии пользователей, поэтому необходимости в создании собственных шаблонов, как правило, не возникает. Однако может потребоваться задать параметры пользователя для управления внутрикорпоративными программами или объединить изменения реестра, вносимые с помощью существующих шаблонов. Полученный комбинированный шаблон можно использовать для тиражирования типичных изменений для конкретных групп компьютеров или пользователей.

Экран 3. Политики, реализуемые через adm-шаблон.

Связь между оснасткой GPE и ее шаблонами похожа на связь между SPE и шаблонами этой оснастки. На Экране 3 показаны политики для User ConfigurationAdministrative TemplatesSystem. Для политики с именем «Don`t display welcome screen at logon» в шаблоне System.adm приведен следующий текст:

POLICY !!NoWelcomeTips
KEYNAME "SoftwareMicrosoft
WindowsCurrentVersionPoliciesExplorer"
EXPLAIN !!NoWelcomeTips_Help
VALUENAME "NoWelcomeScreen"
END POLICY

В секции POLICY шаблона GPE указывается раздел реестра, даже если он тот же, что и в предыдущей или следующей политике. Следует обратить внимание на два восклицательных знака слева от имени политики; эти отметки идентифицируют переменную. В секции [Strings] данного примера содержится следующий текст, соответствующий тексту в оснастке GPE:

NoWelcomeTips="Don`t display
 welcome screen 
at logon"

Значение в секции EXPLAIN, не существующей в шаблонах SPE, также начинается с двух восклицательных знаков, идентифицирующих переменную в секции [Strings]. Следует отметить, что имя строки - такое же, как имя строки для имени политики, с добавлением символа подчеркивания и слова Help. В данном случае переменная указывает на текст, выводимый на закладке Explain (пояснение).

Экран 4. Секция [Strings] файла System.adm.

В секции [Strings] файла System.adm находятся переменные, показанные на Экране 4. Символ в тексте соответствует возврату каретки. Тому, кто создает политики, нет необходимости приводить пояснения. Система не будет «жаловаться» на их отсутствие.

Создание adm-файлов для NT и Windows 9x SPE

Adm-шаблоны в NT и Windows 9x обрабатываются в оснастке SPE (poledit.exe). Для реализации политик необходимо использовать подходящую для данной платформы версию SPE. Пример того, как соотносятся между собой SPE- и adm-шаблоны, приведен во врезке «Связь SPE с реестром». В NT Server входят три шаблона:

  • Common.adm - параметры реестра, общие для NT и Windows 9x;
  • Winnt.adm - специальные параметры реестра для NT;
  • Windows.adm - специальные параметры реестра для Windows 95.

Эти шаблоны, которые находятся в каталоге \%systemroot%inf, можно отредактировать: например, убрать функции, которые никогда не понадобятся, - важное качество, если техники отдела ИТ работают с SPE. Можно и добавить возможности, отсутствующие в стандартном файле шаблона. Шаблоны имеют следующие ограничения.

  • Сфера действия политик ограничена параметрами ветвей реестра HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER.
  • Нельзя ссылаться на раздел реестра, требующий двоичных данных.

Шаблоны можно создавать и сохранять в папке \%systemroot%inf. Чтобы использовать шаблоны, следует открыть SPE, выбрать из строки меню пункты Options, Policy Template, затем выбрать файл. В синтаксисе шаблонов используются ключевые слова, связанные с переменными; переменные указывают на разделы реестра. Синтаксис шаблона:

CLASS
 CATEGORY
 KEYNAME
 POLICY
 PART
 VALUENAME "value"
 VALUEON
 VALUEOFF
 END PART
 END POLICY
 END CATEGORY
[Strings]

CLASS содержит имя ветви реестра (MACHINE для HKEY_LOCAL_MACHINE или USER для HKEY_CURRENT_USER). Каждый шаблон имеет один или два индикатора CLASS. Если используются два класса, необходимо сгруппировать все политики для одного CLASS, прежде чем приступать ко второму. Файлы шаблонов не содержат строки END CLASS; вместо этого имя нового класса указывает на конец предыдущего класса. Начало секции [Strings] отмечает конец второго CLASS.

CATEGORY определяет начало категории (и отображается пиктограммой книги в окне SPE); END CATEGORY определяет конец категории. Категория - группа логически связанных политик, выводимых в виде заголовка, который можно расширить в окне SPE. Категории могут быть вложенными. В команде CATEGORY используется переменная, представляющая собой текстовую строку, приведенную в секции [Strings] шаблона. Текстовая строка выводится в окне SPE в качестве определения политики.

KEYNAME - раздел реестра, содержащий элемент политики. Если раздела еще не существует, то KEYNAME станет новым разделом реестра, в котором будет находиться данный элемент. Если путь реестра к разделу содержит пробелы, то весь путь раздела (за исключением HKEY_LOCAL_MACHINE или HKEY_CURRENT_USER) следует заключить в кавычки.

POLICY - параметр политики. Данный параметр должен существовать внутри CATEGORY, и его имя описывает его функцию. POLICY дополняется флажком с тремя состояниями, который выводится в окне SPE, чтобы пользователь мог активизировать, отключить или проигнорировать политику. END POLICY указывает на конец политики.

PART указывает на начало фрагмента политики (она может состоять из нескольких частей). END PART указывает на конец фрагмента. PART используется в сложных политиках, в которых требуется ввести дополнительные значения в поле Settings в нижней части окна SPE. Дополнительные значения указывают, что для политики требуется больше вариантов, чем просто активизация и отключение. Если назначается политика экранных «обоев» или хранителя экрана, то необходимо ввести имя соответствующего файла. PART можно использовать и для вывода поясняющего текста в поле Settings.

VALUENAME - имя изменяемого или вновь создаваемого элемента реестра (подраздела или элемента данных). Если в элементе VALUENAME в реестре имеются пробелы, то имя следует заключить в кавычки.

VALUE - значение, присвоенное элементу реестра, определенному именем VALUENAME. VALUE может быть текстом (который необходимо заключить в кавычки) или числом.

VALUEON и VALUEOFF используются для работы SPE в режиме Registry Mode, когда для VALUENAME требуется лишь флажок, чтобы активизировать или отключить политику. Как правило, в реестре используются типовые значения: 1 для активизации и 0 для отключения.

[Strings] - последняя секция шаблона, в которой приведен список его переменных. Microsoft использует термин «переменная», но в действительности это предложения, выводимые в окне SPE и описывающие политику. Любой элемент шаблона, начинающийся с двух восклицательных знаков, определяет переменную, которая будет показана в секции [Strings]. Ниже приведены строки, входящие в секцию [Strings] файла Common.adm. Переменная находится слева от знака равенства, а значение переменной, заключенное в кавычки, - справа.

RemoveRun="Remove Run command from Start
menu"
RemoveFolders="Remove folders
 from Settings on Start menu"
RemoveTaskbar="Remove Taskbar
 from Settings on Start menu"
RemoveFind="Remove Find command
 from Start menu"

Системные и групповые политики операционная система распространяет автоматически.

Осторожность не помешает

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

Кэти Ивенс - редактор Windows 2000 Magazine. Является соавтором более40 книг по компьютерной тематике, включая «Windows 2000: The Complete Reference» (Osborne/McGraw-Hill). С ней можно связаться по адресу: kivens@win2000mag.com.


Недостаток файла реестра

С помощью файла реестра (.reg) нельзя удалить никакие элементы реестра. Если в реестре имеется испорченный раздел или элемент данных, то корректная информация, посылаемая в этот раздел или элемент, просто добавляется к неверной, хотя новые значения, посылаемые в элемент данных, заменяют существующие величины.

Иногда reg-файлы используются при установке и модернизации некоторых программных пакетов. При этом происходит не просто замещение данных, а изменение в разделах и элементах данных реестра, однако в реестрах остаются старые элементы. Многие программы при удалении просто обнуляют данные с помощью reg-файлов или полностью игнорируют данные реестра. В конечном итоге реестр разрастается за счет ненужных или конфликтующих элементов. В этом случае администратору могут пригодиться такие средства очистки реестра, как regclean.exe. (Regclean можно загрузить с узла http://support.microsoft.com/support/downloads.) Однако Regclean работает только с ветвью HKEY_CLASSES_ROOT, которая почти никогда не вызывает серьезных неполадок с реестром, а сама программа может создать проблем не меньше, чем устранить.


Таблица 1. Типы данных элементов файла реестра.
Тип данныхТипы данных элементов файла реестра
REG_BINARYhex
REG_DWORDdword
REG_EXPAND_SZhex(2)
REG_MULTI_SZhex(7)
REG_SZнет

назад


Типы данных реестра

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

REG_BINARY

Данные типа REG_BINARY представляют собой двоичные данные без разделителей. К этому типу в основном принадлежат данные, описывающие аппаратные устройства.

В редакторах реестра эти данные обычно отображаются и редактируются в двоичном или шестнадцатеричном формате. Чтобы представить содержимое элемента REG_BINARY в двоичном формате, нужно дважды щелкнуть на нем в редакторе regedit. В regedt32 следует выделить элемент и выбрать пункты View, Display Binary Data из строки меню. В открывшемся окне данные будут показаны в двоичном формате (если выбрать в панели меню пункты View, Binary, то данные будут отображены в шестнадцатеричном формате).

REG_DWORD

Данные типа REG_DWORD представляют собой двойное слово: два 16-разрядных слова, образующих 32-разрядную величину. REG_DWORD - самый распространенный тип данных в реестре. В элементах этого типа хранится информация о драйверах устройств, логические переменные, параметры (например, время в секундах, отведенное на ожидание какого-нибудь события) и другая информация.

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

REG_EXPAND_SZ

Тип REG_EXPAND_SZ применяется в элементах, содержащих одну или несколько переменных, которые должны распознаваться службой операционной системы или прикладной программой. Эти переменные - те самые, которые используются в командных файлах и сценариях (например, \%systemroot%, \%username%). Не понятно, почему реестр не может выделить переменную и передать ее по запросу, поступившему из службы или программы.

REG_MULTI_SZ

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

Окно редактирования regedit отображает двоичные данные (в правой панели окна можно увидеть и текст). В редакторе regedt32 следует выбрать из строки меню пункты Edit, Multi String или дважды щелкнуть на списке, чтобы увидеть весь элемент целиком.

REG_SZ

Элементы типа REG_SZ - текстовые строки фиксированной длины. Значения большинства элементов этого типа - логические данные и короткие текстовые строки. Этот тип данных широко распространен и, вероятно, встречается так же часто, как тип REG_DWORD. Обозначение SZ указывает на нулевой конечный байт строки (String/Zero byte); к концу строки добавляется ноль. Оба редактора реестра не показывают конечный ноль, поэтому на него можно не обращать внимания (о конечном байте необходимо помнить в случаях, когда нужно самостоятельно составить программу для манипуляций с реестром). При просмотре и редактировании элемента данного типа в программе regedit открывается окно с заголовком String Editor. В окне редактирования regedit отображается имя величины. В regedt32 окно называется Edit String. Regedt32 не показывает имени величины в окне редактирования, поэтому забывчивым пользователям придется отбуксировать окно в сторону, чтобы увидеть выбранный элемент.

назад


Таблица 2. Значения ACL.
ЧислоПрава доступа к целевому разделу реестра
1Полный административный доступ
2Административный доступ с правом чтения
3Административный доступ для чтения и записи
4Административный доступ с правом чтения, записи и удаления
5Полный авторский доступ
6Авторский доступ с правом чтения и записи
7Полный доступ для посторонних пользователей
8Доступ с правом чтения для посторонних пользователей
9Доступ с правом чтения и записи для посторонних пользователей
10Доступ для чтения, записи и удаления для посторонних пользователей
11Полный доступ для опытных пользователей
12Доступ для опытных пользователей по чтению и записи
13Доступ для опытных пользователей с правом чтения, записи и удаления
14Полный доступ для системного оператора
15Доступ для системного оператора по чтению и записи
16Доступ для системного оператора для чтения, записи и удаления
17Полный системный доступ
18Системный доступ с правом чтения и записи
19Системный доступ для чтения
20Административный доступ с правом чтения, записи и выполнения
21Полный доступ для интерактивных пользователей
22Доступ для интерактивных пользователей с правом чтения и записи
23Доступ для интерактивных пользователей с правом чтения, записи и удаления

назад


Связь SPE с реестром

Чтобы выявить связь между редактором системной политики (System Policy Editor, SPE) и реестром, следует открыть SPE и выбрать категорию, затем открыть шаблон и отыскать исходный текст, в котором реализованы варианты, выбранные в SPE. Например, на Экране 5 показан вид ограничений Shell для пользователей в SPE. На Экране 6 показан фрагмент исходного текста шаблона Common.adm, реализующий выбранные ограничения. Синтаксис и организация шаблона просты (данный шаблон формирует содержимое окна, показанного на Экране 5).

Экран 5. SPE в NT.
Экран 6. Исходный текст Common.adm.