|  | 
				
			 
 
 Структура ADML-файла (файла языковых ресурсов)Как я уже говорил во введении этой статьи, в файлах ADML указываются языковые ресурсы, привязывающиеся к определенному языку, без которых ADMX-файл не будет корректно работать. Основная задача этого файла – обеспечение корректного отображения описания параметра политики, который можно будет найти в оснастке редактора управления групповыми политиками. Структура этого файла намного проще структуры ADMX-файла и ее вы можете увидеть на следующей иллюстрации: 
 Рис. 3. Структура ADML-файла <stringTable>
 <string> ... </string>
</stringTable>Элемент presentationTable. Последний элемент представляет собой целую структуру дочерних элементов управления параметрами отдельных параметров групповой политики, включая в себя всевозможные флажки, переключатели, подписи, подсказки и прочее. Дочерними элементами являются элементы presentation, которые представляют собой отображаемые сведения параметров для параметров политики. Синтаксис для этого элемента имеет следующий вид: 
 <presentationTable>
 <presentation> ... </presentation>
</presentationTable> 
 Создание своего административного шаблонаНа первый взгляд все эти XML файлы со множеством родительских и дочерних элементов могут показаться очень сложными при создании своего собственного административного шаблона. Чтобы соответствующий материал вам было проще усвоить, в этом разделе я покажу, как можно создать свои ADMX и ADML файлы, предназначенные для управления двумя параметрами антивирусного программного обеспечения Microsoft Security Essentials. Сразу хотелось бы обратить ваше внимание на то, что данный антивирусный продукт можно использовать в SOHO компаниях, то есть там, где развертывается не более 10 компьютеров.  Мы рассмотрим только три параметра, которые позволяют вам указывать тип проверки, а также ее периодичность. Для начала, перед созданием ADMX-файла, вам нужно узнать какие именно параметры в каких разделах системного реестра должны изменяться. При помощи программы ProcessMonitor от Марка Руссиновича или программы RegMon можно быстро отследить изменения в реестре и узнать, что при изменении опций в самом Microsoft Security Essentials, меняются следующие параметра реестра: Для того чтобы выполнять запланированную проверку, только когда компьютер включен, но не используется, в системный реестр вносятся следующие изменения:[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Antimalware\Scan]
 “ScanOnlyIfIdle”=dword:00000001
 ;Опция включена
 “ScanOnlyIfIdle”=dword:00000000
 ;Опция отключена
 
 
 Для того чтобы ограничить использование ЦПУ при проверке, в реестре изменяется значение следующего параметра:
 [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Antimalware\Scan]
“AvgCPULoadFactor”=dword:00000000
;Опция отключена
“AvgCPULoadFactor”=dword:0000000a
;10%
“AvgCPULoadFactor”=dword:00000014
;20%
“AvgCPULoadFactor”=dword:0000001e
;30%
“AvgCPULoadFactor”=dword:00000028
;40%
“AvgCPULoadFactor”=dword:00000032
;50%
“AvgCPULoadFactor”=dword:0000003c
;60%
“AvgCPULoadFactor”=dword:00000046
;70%
“AvgCPULoadFactor”=dword:00000050
;80%
“AvgCPULoadFactor”=dword:0000005a
;90%
“AvgCPULoadFactor”=dword:00000064
;100%
 После того как вы узнали нужные параметры и значения реестра, можно приступать к созданию ADMX-файла. Первым делом в ADMX-файле вам нужно указать XML-объявление и элемент policyDefinitions. Практически во всех случаях эти строки создаваемого вами XML-файла одинаковые. У вас они должны получиться примерно следующими:<?xml version="1.0" encoding="utf-8"?> <!-- Dmitry Bulanov, 2011 © -->
 <policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" revision="1.0" schemaVersion="1.0" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
 После этого необходимо заполнить элемент policyNamespaces, где нужно будет указать уникальное имя пространства имен, а также ссылку на существующую категорию из другого элемента policyNamespaces. Так как создается ADMX-файл для Microsoft Security Essentials, укажем префикс mse и назовем пространство имен Microsoft.Policies.MicrosoftSecurityEssentials, а также элемент resources, где зададим минимальный уровень версии ADML-файла 1.0, как показано ниже:<policyNamespaces> <target prefix="mse" namespace="Microsoft.Policies.MicrosoftSecurityEssentials " />
 <using prefix="windows" namespace="Microsoft.Policies.Windows" />
 </policyNamespaces>
 <supersededAdm fileName="mse" />
 <resources minRequiredRevision="1.0" />
 Так как элемент supportedOn является опциональным элементом, в нашем случае мы опустим использование этого элемента. Поскольку для нашей группы административных шаблонов нужно указать группу, в которой будут расположены административные шаблоны антивирусного программного обеспечения, нужно добавить элемент categories, как показано в следующем листинге:<categories> <category name="MicrosoftSecurityEssentials" displayName="$(string.MicrosoftSecurityEssentials)" explainText="$(string.MicrosoftSecurityEssentials_Help)">
 </category>
 </categories>
 Вот мы и дошли до самого интересного момента, когда нужно добавлять разделы и параметры системного реестра, которые будут использоваться как основа параметров групповых политик. На этом шаге стоит обратить внимание на то что, так как параметры реестра для Microsoft Security Essentials расположены только в разделе HKLM, в классе политики необходимо указать Machine. Эти параметры можно увидеть в следующем листинге, причем, что самое интересное, в данном листинге вы можете найти как переключатели, так и раскрывающиеся меню:<policies> <policy name="SchedScanCheck" class="Machine" displayName="$(string.SchedScanCheck)" explainText="$(string.SchedScanCheck_Help)" key="Software\Microsoft\Microsoft Antimalware\Scan" valueName="ScanOnlyIfIdle">
 <parentCategory ref="MicrosoftSecurityEssentials" />
 <supportedOn ref="windows:SUPPORTED_WindowsXPSP2" />
 <enabledValue>
 <decimal value="1" />
 </enabledValue>
 <disabledValue>
 <decimal value="0" />
 </disabledValue>
 </policy>
 <policy name="ScanSch" class="Machine" displayName="$(string.LimitCPUUsage)" explainText="$(string.LimitCPUUsage_Help)" presentation="$(presentation.LimitCPUUsage)" key="Software\Microsoft\Microsoft Antimalware\Scan">
 <parentCategory ref="MicrosoftSecurityEssentials" />
 <supportedOn ref="windows:SUPPORTED_WindowsXPSP2" />
 <elements>
 <enum id="LimitCPUUsageMode" valueName="AvgCPULoadFactor" required="true">
 <item displayName="$(string.10perc)">
 <value>
 <decimal value="10" />
 </value>
 </item>
 <item displayName="$(string.20perc)">
 <value>
 <decimal value="20" />
 </value>
 </item>
 <item displayName="$(string.30perc)">
 <value>
 <decimal value="30" />
 </value>
 </item>
 <item displayName="$(string.40perc)">
 <value>
 <decimal value="40" />
 </value>
 </item>
 <item displayName="$(string.50perc)">
 <value>
 <decimal value="50" />
 </value>
 </item>
 <item displayName="$(string.60perc)">
 <value>
 <decimal value="60" />
 </value>
 </item>
 <item displayName="$(string.70perc)">
 <value>
 <decimal value="70" />
 </value>
 </item>
 <item displayName="$(string.80perc)">
 <value>
 <decimal value="7" />
 </value>
 </item>
 <item displayName="$(string.90perc)">
 <value>
 <decimal value="90" />
 </value>
 </item>
 <item displayName="$(string.100perc)">
 <value>
 <decimal value="100" />
 </value>
 </item>
 </enum>
 </elements>
 </policy>
 </policies>
 </policyDefinitions>
 После того как ADMX-файл будет окончательно завершен, вам еще предстоит написать сам ADML-файл. Как вы уже знаете, структура этого файла намного проще. В этом файле следует оставить XML-объявление и элемент policyDefinitions такими же, как вы указывали в самом ADMX-файле. Обязательно обратить внимание на то, что весь текст в этом файле должен быть в кодировке UTF-8. В элементах displayName и description укажем, что данный административный шаблон создается для антивирусного программного обеспечения Microsoft Security Essentials. В элементе stringTable следует указать идентификаторы и описания для каждого уникального объекта, который был создан в ADMX-файле. Наверное, самой сложной частью ADML-файла считается определение структуры элементов управления отдельных параметров групповой политики в элементе presentationTable. Так как в нашем случае только в одном параметре политики есть раскрывающиеся списки, необходимо указать дочерние элементы dropdownList с идентификаторами и описанием данных элементов управления. В итоге должен получиться следующий XML-файл:<?xml version="1.0" encoding="utf-8"?> <!-- Dmitry Bulanov, 2011 © -->
 <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" revision="1.0" schemaVersion="1.0" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
 <displayName>Microsoft Security Essentials</displayName>
 <description>Microsoft Security Essentials</description>
 <resources>
 <stringTable>
 <string id="MicrosoftSecurityEssentials">Политики Microsoft Security Essentials</string>
 <string id="MicrosoftSecurityEssentials_Help">Настройка различных параметров антивирусного программного обееспечения Microsoft Security Essentials</string>
 <string id="SchedScanCheck">Выполнять запланированную проверку, только когда компьютер включен, но не используется</string>
 <string id="SchedScanCheck_Help">Этот параметр позволяет выполнять запланированную проверку только в том случае, когда вы не пользуетесь компьютером.
 При выборе параметра "Включить" будет включена данная опция.
 Если вы выберите опцию "Отключить", то проверка будет выполняться в строго отведенное вами время</string>
 <string id="ScanSchDayMode">Настройка периодичности сканирования Microsoft Security Essentials</string>
 <string id="LimitCPUUsage">Ограничить использование ЦПУ при проверке</string>
 <string id="LimitCPUUsage_Help">При помощи текущего параметра групповой политики вы можете ограничить использование ЦПУ при проверке. Значение по умолчнаию - 50%</string>
 <string id="10perc">10%</string>
 <string id="20perc">20%</string>
 <string id="30perc">30%</string>
 <string id="40perc">40%</string>
 <string id="50perc">50%</string>
 <string id="60perc">60%</string>
 <string id="70perc">70%</string>
 <string id="80perc">80%</string>
 <string id="90perc">90%</string>
 <string id="100perc">100%</string>
 </stringTable>
 <presentationTable>
 <presentation id="LimitCPUUsage">
 <text>Укажите лимит использования ЦПУ в процентах</text>
 <dropdownList refId="LimitCPUUsageMode" defaultItem="0">Ограничить использование ЦПУ до: </dropdownList>
 </presentation>
 </presentationTable>
 </resources>
 </policyDefinitionResources>
 После того как вы поместите созданные файлы в папку Policy Definitions на локальном компьютере или в папку SYSVOL на контроллере домена, данные политики будут отображаться в оснастке редактора управления групповыми политиками. 
 ЗаключениеИз этой статье вы узнали о параметрах групповой политики, основанных на данных системного реестра, которые называются административными шаблонами. Вкратце была рассмотрена история развития административных шаблонов, структура ADMX-файла – файла, не зависящего от языка, структура ADML-файла – файла языковых ресурсов. Также, в данной статье был написан административный шаблон для управления антивирусным программным обеспечением – Microsoft Security Essentials.   |  |