Поделиться через


Справочник по схеме шаблона приложения для UE-V 2.x

Виртуализация средств взаимодействия с пользователем (Майкрософт) (UE-V) 2.0, 2.1 и 2.1 с пакетом обновления 1 (SP1) используют шаблоны расположения параметров XML для определения параметров классического приложения и параметров Windows, которые записываются и применяются UE-V. UE-V включает набор шаблонов расположения параметров по умолчанию. Вы также можете создавать настраиваемые шаблоны расположения параметров с помощью генератора UE-V.

Опытный пользователь может настроить XML-файл для шаблона расположения параметров. В этом разделе подробно описана XML-структура шаблонов расположения параметров UE-V 2.1 (SP1) и 2.0, а также приведены рекомендации по редактированию этих файлов.

Справочник по схеме шаблона приложения UE-V 2.1 и 2.1 с пакетом обновления 1 (SP1)

В этом разделе подробно описана XML-структура шаблона расположения параметров UE-V 2.1 и 2.1 с пакетом обновления 1 (SP1), а также приведены рекомендации по редактированию этого файла.

В этом разделе

Атрибут объявления и кодирования XML

Обязательный: True

Тип: String

В объявлении XML должен быть указан атрибут XML версии 1.0 (<?xml version="1.0">). Шаблоны расположения параметров, созданные генератором UE-V, сохраняются в кодировке UTF-8, хотя кодировка явно не указана. Рекомендуется включить атрибут encoding="UTF-8" в этот элемент, как рекомендуется. Все шаблоны, включенные в продукт, также указывают этот тег (см. документы в %ProgramFiles%\Виртуализация средств взаимодействия с пользователем (Майкрософт)\Templates для справки). Пример:

<?xml version="1.0" encoding="UTF-8"?>

Пространство имен и корневой элемент

Обязательный: True

Тип: String

UE-V использует https://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate пространство имен для всех приложений. SettingsLocationTemplate является корневым элементом и содержит все остальные элементы. Ссылка SettingsLocationTemplate во всех шаблонах с помощью этого тега:

<SettingsLocationTemplate xmlns='https://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate'>

Типы данных

Это типы данных для схемы шаблона приложения UE-V.

GUID GUID описывает стандартное глобально уникальное регулярное выражение идентификатора в виде "\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}. Используется в элементе Filesetting\Root\KnownFolder для проверки форматирования известных папок.

FilenameString FilenameString ссылается на имя файла процесса, который необходимо отслеживать. Его значения ограничены регулярным выражением [^\\\?\\*\|<>/:]+, (то есть они не могут содержать символы обратной косой черты, звездочки или вопросительного знака wild-карта символы, символы конвейера, символы больше или меньше знака, косой черты или двоеточия).

IDString IDString — это значение идентификатора элементов Application, SettingsLocationTemplate и Common (используется для описания наборов приложений с общими параметрами). Он ограничен тем же регулярным выражением, что и FilenameString ([^\\\?\*\|<>/:]+).

TemplateVersion TemplateVersion — это целочисленное значение, используемое для описания редакции шаблона расположения параметров. Его значение может варьироваться от 0 до 2147483647.

Пустой Пустой означает значение NULL. Этот параметр используется в Process\ShellProcess, чтобы указать на отсутствие процесса для мониторинга. Это значение не должно использоваться ни в каких шаблонах приложений.

Автор Тип данных Author — это сложный тип, который определяет автора шаблона. Он содержит два дочерних элемента: Name и Email. В типе данных Author элемент Name является обязательным, а элемент Email является необязательным. Этот тип описан более подробно в элементе SettingsLocationTemplate.

Диапазон Range определяет целочисленный класс, состоящий из двух дочерних элементов: Minimum и Maximum. Этот тип данных реализован в типе данных ProcessVersion. Если задано значение , необходимо включить значения Минимальное и Максимальное.

ProcessVersion ProcessVersion определяет тип с четырьмя дочерними элементами: Основной, Дополнительный, Сборка и Исправление. Этот тип данных используется элементом Process для заполнения значений ProductVersion и FileVersion. Данные для этого типа являются значением Range. Основной дочерний элемент является обязательным, а остальные — необязательным.

Архитектура Архитектура перечисляет два возможных значения: Win32 и Win64. Эти значения используются для указания архитектуры процесса.

Процесс Тип данных Process — это контейнер, используемый для описания процессов, отслеживаемых UE-V. Он содержит шесть дочерних элементов: Filename, Architecture, ProductName, FileDescription, ProductVersion и FileVersion. В этой таблице подробно описаны соответствующие типы данных каждого элемента:

Элемент

Тип данных

Обязательное

Имени файла

FilenameString

True

Architecture (Архитектура)

Architecture (Архитектура)

False

ProductName

Строка

False

FileDescription

Строка

False

ProductVersion

ProcessVersion

False

FileVersion

ProcessVersion

False

Процессов Тип данных Processes представляет контейнер для коллекции из одного или нескольких элементов Process. В типе последовательности процессов поддерживаются два дочерних элемента: Process и ShellProcess. Process — это элемент типа Process, а shellProcess имеет тип данных Empty. В последовательности должен быть определен по крайней мере один элемент.

Путь Путь используется RegistrySetting и FileSetting для ссылки на пути к реестру и файлам. Этот элемент поддерживает два необязательных атрибута: Recursive и DeleteIfNotFound. Для обоих значений задано значение default="False".

Рекурсивный указывает, что путь и все вложенные папки включены для параметров файла или что для параметров реестра включены все дочерние разделы реестра. В обоих случаях все элементы на текущем уровне включаются в захваченные данные. Для объекта FileSettings все файлы в указанной папке включаются в данные, захваченные UE-V, но папки не включаются. Для путей реестра все значения в текущем пути записываются, но дочерние разделы реестра не записываются. В обоих случаях следует соблюдать осторожность, чтобы избежать записи больших наборов данных или большого количества элементов.

Атрибут DeleteIfNotFound удаляет параметр из данных пути к хранилищу параметров пользователя. Это может быть желательно в тех случаях, когда удаление этих параметров из пакета сэкономит большой объем дискового пространства на файловом сервере пути к хранилищу параметров.

FileMask FileMask указывает только определенные типы файлов для папки, определенной путем. Например, Путь может иметь значение C:\users\username\files , а FileMask — *.txt для включения только текстовых файлов.

RegistrySetting RegistrySetting представляет контейнер для разделов и значений реестра и соответствующего требуемого поведения агента UE-V. В этом типе определены четыре дочерних элемента: Path, Name, Exclude и последовательность значений Path и Name.

FileSetting FileSetting содержит параметры, связанные с файлами и путями к файлам. Определены четыре дочерних элемента: Root, Path, FileMask и Exclude. Root является обязательным, а остальные — необязательными.

Параметры Параметры — это контейнер для всех параметров, применимых к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction, описанных ранее. Кроме того, он также может содержать следующие дочерние элементы с описанным поведением:

Элемент

Описание

Асинхронная репликация

Пакеты асинхронных параметров применяются без блокировки запуска приложения, поэтому запуск приложения продолжается, пока параметры еще применяются. Это полезно для параметров, которые могут применяться асинхронно, например get/set с помощью API, например SystemParameterSetting.

PreventOverlappingSynchronization

По умолчанию UE-V сохраняет параметры только для приложения, когда последний экземпляр приложения, использующий шаблон, закрыт. Если для этого элемента задано значение false, UE-V экспортирует параметры, даже если выполняются другие экземпляры приложения. Подходящие шаблоны ( те, которые содержат раздел элемента Common), которые поставляются с UE-V, используют этот флаг, чтобы разрешить общий экспорт параметров при закрытии приложения, предотвращая экспорт параметров приложения до закрытия последнего экземпляра.

AlwaysApplySettings

(появилось в версии 2.1)

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

Элемент Name

Обязательный: True

Тип: String

Имя указывает уникальное имя шаблона расположения параметров. Он используется для отображения при ссылке на шаблон в журналах WMI, PowerShell, Просмотр событий и отладки. Как правило, не следует ссылаться на сведения о версии, так как это можно возразить из элемента ProductVersion. Например, укажите <Name>My Application</Name> вместо <Name>My Application 1.1</Name>.

Примечание UE-V не ссылается на внешние DTD, поэтому невозможно использовать именованные сущности в шаблоне расположения параметров. Например, не используйте ® для ссылки на знак зарегистрированной торговой марки ® . Вместо этого используйте канонические нумерованные ссылки, чтобы включить эти типы специальных символов, например ® для символа ®. Это правило применяется ко всем строковым значениям в этом документе.

Полный список сущностей символов см. в этой статье http://www.w3.org/TR/xhtml1/dtds.html . Документы в кодировке UTF-8 могут содержать символы Юникода напрямую. Сохранение шаблонов с помощью генератора UE-V автоматически преобразует сущности символов в их представления в Юникоде.

Элемент ID

Обязательный: True

Тип: String

Идентификатор заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения (например, см. выходные данные Get-UevTemplate и Get-UevTemplateProgram командлетов PowerShell). По соглашению этот тег не должен содержать пробелы, что упрощает создание скриптов. Номера версий приложений должны быть указаны в этом элементе, чтобы упростить идентификацию шаблона, например <ID>MicrosoftCalculator6</ID> или <ID>MicrosoftOffice2010Win64</ID>.

Элемент Version

Обязательный: True

Тип: Целое число

Минимальное значение: 0

Максимальное значение: 2147483647

Версия определяет версию шаблона расположения параметров для административного отслеживания изменений. Генератор UE-V автоматически увеличивает это число на единицу при каждом сохранении шаблона. Обратите внимание, что это поле должно быть целым числом; дробные значения, такие как <Version>2.5</Version> , не допускаются.

Подсказка: Заметки об изменениях версий можно сохранять с помощью тегов комментариев <!-- -->XML, например:

  <!--
     Version History

     Version 1 Jul 05, 2012 Initial template created by Generator - Denise@Contoso.com
     Version 2 Jul 31, 2012 Added support for app.exe v2.1.3 - Mark@Contoso.com
     Version 3 Jan 01, 2013 Added font settings support - Mark@Contoso.com
     Version 4 Jan 31, 2013 Added support for plugin settings - Tony@Contoso.com
   -->
  <Version>4</Version>

Важно Это значение запрашивается, чтобы определить, следует ли применять новую версию шаблона к существующему шаблону в следующих экземплярах:

  • При выполнении запланированной задачи автоматического обновления шаблона

  • При выполнении командлета PowerShell Update-UevTemplate

  • Когда метод microsoft\uev:SettingsLocationTemplate Update вызывается через WMI

Элемент Author

Обязательный: False

Тип: String

Автор определяет создателя шаблона расположения параметров. Поддерживаются два необязательных дочерних элемента: Name и Email. Оба атрибута являются необязательными, но если указан Email дочерний элемент, он должен сопровождаться элементом Name. Автор ссылается на полное имя контакта для шаблона расположения параметров, а адрес электронной почты должен ссылаться на адрес электронной почты автора. Рекомендуется включить эти сведения в шаблоны, опубликованные публично, например в коллекции шаблонов UE-V.

Processes and Process Element

Обязательный: True

Тип: Элемент

Процессы содержат по крайней мере один <Process> элемент, который, в свою очередь, содержит следующие дочерние элементы: Filename, Architecture, ProductName, FileDescription, ProductVersion и FileVersion. Дочерний элемент Filename является обязательным, а остальные — необязательными. Полностью заполненный элемент содержит теги, аналогичные следующему примеру:

<Process>
  <Filename>MyApplication.exe</Filename>
  <Architecture>Win64</Architecture>
  <ProductName> MyApplication </ProductName>
  <FileDescription>MyApplication.exe</FileDescription>
  <ProductVersion>
    <Major Minimum="2" Maximum="2" />
    <Minor Minimum="0" Maximum="0" />
    <Build Minimum="0" Maximum="0" />
    <Patch Minimum="5" Maximum="5" />
  </ProductVersion>
  <FileVersion>
    <Major Minimum="2" Maximum="2" />
    <Minor Minimum="0" Maximum="0" />
    <Build Minimum="0" Maximum="0" />
    <Patch Minimum="5" Maximum="5" />
  </FileVersion>
</Process>

Имени файла

Обязательный: True

Тип: String

Имя файла — это фактическое имя файла исполняемого файла, отображаемое в файловой системе. Этот элемент задает основное условие, которое UE-V использует для оценки того, применяется ли шаблон к процессу. Этот элемент должен быть указан в XML-файле шаблона расположения параметров.

Допустимые имена файлов не должны соответствовать регулярному выражению [^\\\?\\|<>/:]+, то есть они не могут содержать символы обратной косой черты, звездочки или вопросительного знака wild-карта символы, символы конвейера, больше или меньше знака, косой черты или двоеточия (\ ? * | <> или : символы.).

Подсказка: Чтобы протестировать строку для этого регулярного выражения, используйте командное окно PowerShell и замените имя исполняемого файла именем YourFileName:

"YourFileName.exe" -match "[\\\?\*\|<>/:]+"

Значение True указывает, что строка содержит недопустимые символы. Ниже приведены некоторые примеры недопустимых значений.

  • \\server\share\program.exe

  • Программа*.exe

  • Pro?ram.exe

  • Программа<1>.exe

Примечание Генератор UE-V кодирует символы больше и меньше, > чем и < соответственно.

В редких случаях значение FileName не обязательно будет включать расширение .exe, но оно должно быть указано как часть значения. Например, <Filename>MyApplictication.exe</Filename> следует указать вместо <Filename>MyApplictication</Filename>. Во втором примере шаблон не применяется к процессу, если фактическое имя исполняемого файла — "MyApplication.exe".

Architecture (Архитектура)

Обязательный: False

Тип: Архитектура (строка)

Архитектура относится к архитектуре процессора, для которой был скомпилирован целевой исполняемый файл. Допустимые значения: Win32 для 32-разрядных приложений или Win64 для 64-разрядных приложений. Если он имеется, этот тег ограничивает применимость шаблона расположения параметров к определенной архитектуре приложения. В качестве примера сравните файлы %ProgramFiles%\Виртуализация средств взаимодействия с пользователем (Майкрософт)\templates\ MicrosoftOffice2010Win32.xml и MicrosoftOffice2010Win64.xml, включенные в UE-V. Это полезно, если относительные пути меняются между разными версиями исполняемого файла или если параметры были добавлены или удалены при переходе от одной архитектуры процессора к другой.

Если этот элемент отсутствует, шаблон расположения параметров игнорирует архитектуру процесса и применяется как к 32-разрядным, так и к 64-разрядным процессам, если применяются имя файла и другие атрибуты.

Примечание UE-V не поддерживает процессоры ARM в этой версии.

ProductName

Обязательный: False

Тип: String

ProductName — это необязательный элемент, используемый для идентификации продукта в целях администрирования или создания отчетов. ProductName отличается от filename тем, что нет ограничений регулярного выражения на его значение. Это позволяет получить более понятные описания процесса, в котором имя исполняемого файла может быть неочевидным. Пример:

<Process>
  <Filename>MyApplication.exe</Filename>
  <ProductName>My Application 6.x by Contoso.com</ProductName>
  <ProductVersion>
    <Major Minimum="6" Maximum="6" />
  </ProductVersion>
</Process>

FileDescription

Обязательный: False

Тип: String

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

Например, в подходящем приложении может быть полезно предоставить напоминания о функции двух исполняемых файлов (MyApplication.exe и MyApplicationHelper.exe), как показано ниже:

<Processes>
  <Process>
    <Filename>MyApplication.exe</Filename>
    <FileDescription>My Application Main Engine</ FileDescription>
    <ProductVersion>
      <Major Minimum="6" Maximum="6" />
    </ProductVersion>
  </Process>
  <Process>
    <Filename>MyApplicationHelper.exe</Filename>
    <FileDescription>My Application Background Process Executable</FileDescription>
    <ProductVersion>
      <Major Minimum="6" Maximum="6" />
    </ProductVersion>
  </Process>
</Processes>

ProductVersion

Обязательный: False

Тип: String

ProductVersion относится к основным и дополнительным версиям продукта файла, а также к уровню сборки и исправлений. ProductVersion является необязательным элементом, но если он указан, он должен содержать по крайней мере дочерний элемент Major. Значение должно выражать диапазон в форме Minimum="X" Maximum="Y", где X и Y являются целыми числами. Значения Минимум и Максимум могут быть идентичными.

Элементы версии продукта и файла могут быть оставлены неуказанными. Это делает шаблон "не зависящим от версии", то есть шаблон будет применяться ко всем версиям указанного исполняемого файла.

Пример 1.

Версия продукта: 1.0, указанная в генераторе UE-V, создает следующий XML-код:

<ProductVersion>
  <Major Minimum="1" Maximum="1" />
  <Minor Minimum="0" Maximum="0" />
</ProductVersion>

Пример 2.

Версия файла: 5.0.2.1000, указанная в генераторе UE-V, создает следующий XML-код:

<FileVersion>
  <Major Minimum="5" Maximum="5" />
  <Minor Minimum="0" Maximum="0" />
  <Build Minimum="2" Maximum="2" />
  <Patch Minimum="1000" Maximum="1000" />
</FileVersion>

Неправильный пример 1 — неполный диапазон:

Присутствует только атрибут Minimum. Максимальное значение также должно быть включено в диапазон.

<ProductVersion>
  <Major Minimum="2" />
</ProductVersion>

Неправильный пример 2. Дополнительный параметр, указанный без элемента Major:

Присутствует только элемент Minor. Майор также должен быть включен.

<ProductVersion>
  <Minor Minimum="0" Maximum="0" />
</ProductVersion>

FileVersion

Обязательный: False

Тип: String

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

Чтобы определить версию продукта и версию файла конкретного исполняемого файла, щелкните правой кнопкой мыши файл в Windows Обозреватель, выберите Свойства, а затем перейдите на вкладку Сведения.

Включение элемента FileVersion для приложения обеспечивает более детализированную логику точной настройки обнаружения, но не требуется для большинства приложений. Сначала проверяются параметры элемента ProductVersion, а затем — FileVersion. Будет применен более строгий параметр.

Дочерние элементы и правила синтаксиса для FileVersion идентичны элементам ProductVersion.

<Process>
  <Filename>MSACCESS.EXE</Filename>
  <Architecture>Win32</Architecture>
  <ProductVersion>
    <Major Minimum="14" Maximum="14" />
    <Minor Minimum="0" Maximum="0" />
  </ProductVersion>
  <FileVersion>
    <Major Minimum="14" Maximum="14" />
    <Minor Minimum="0" Maximum="0" />
  </FileVersion>
</Process>

Элемент Application

Приложение — это контейнер для параметров, применяемых к конкретному приложению. Это коллекция следующих полей и типов.

Поле или тип

Описание

Имя

Задает уникальное имя для шаблона расположения параметров. Он используется для отображения при ссылке на шаблон в журналах WMI, PowerShell, Просмотр событий и отладки. Дополнительные сведения см. в разделе Имя.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Дополнительные сведения см. в разделе Идентификатор.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, отображаемое в пользовательском интерфейсе, локализованное языковым стандартом языка.

Локализованные описания

Необязательное описание шаблона, локализованное языковым стандартом.

Версия

Определяет версию шаблона расположения параметров для административного отслеживания изменений. Дополнительные сведения см. в разделе Версия.

DeferToMSAccount

Определяет, включен ли этот шаблон вместе с учетной записью Майкрософт. Если для пользователя на компьютере включена синхронизация MSA, этот шаблон будет автоматически отключен.

DeferToOffice365

Как и в случае с MSA, этот шаблон определяет, включен ли этот шаблон вместе с Office365. Если для синхронизации параметров используется Office 365, этот шаблон будет автоматически отключен.

FixedProfile (появилось в версии 2.1)

Указывает, что этот шаблон может быть связан только с профилем, указанным в этом элементе, и не может быть изменен с помощью WMI или PowerShell.

Процессы

Контейнер для коллекции из одного или нескольких элементов Process. Дополнительные сведения см. в разделе Процессы.

Параметры

Контейнер для всех параметров, применяемых к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction. Дополнительные сведения см. в разделе Параметры в типах данных.

Элемент Common

Common похож на элемент Application, но он всегда связан с двумя или более элементами Application. Раздел Общие представляет набор параметров, которые совместно используются этими экземплярами приложения. Это коллекция следующих полей и типов.

Поле или тип

Описание

Имя

Задает уникальное имя для шаблона расположения параметров. Он используется для отображения при ссылке на шаблон в журналах WMI, PowerShell, Просмотр событий и отладки. Дополнительные сведения см. в разделе Имя.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Дополнительные сведения см. в разделе Идентификатор.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, отображаемое в пользовательском интерфейсе, локализованное языковым стандартом языка.

Локализованные описания

Необязательное описание шаблона, локализованное языковым стандартом.

Версия

Определяет версию шаблона расположения параметров для административного отслеживания изменений. Дополнительные сведения см. в разделе Версия.

DeferToMSAccount

Определяет, включен ли этот шаблон вместе с учетной записью Майкрософт. Если для пользователя на компьютере включена синхронизация MSA, этот шаблон будет автоматически отключен.

DeferToOffice365

Как и в случае с MSA, этот шаблон определяет, включен ли этот шаблон вместе с Office365. Если для синхронизации параметров используется Office 365, этот шаблон будет автоматически отключен.

FixedProfile (появилось в версии 2.1)

Указывает, что этот шаблон может быть связан только с профилем, указанным в этом элементе, и не может быть изменен с помощью WMI или PowerShell.

Параметры

Контейнер для всех параметров, применяемых к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction. Дополнительные сведения см. в разделе Параметры в типах данных.

Элемент SettingsLocationTemplate

Этот элемент определяет параметры для одного приложения или набора приложений.

Поле или тип

Описание

Имя

Задает уникальное имя для шаблона расположения параметров. Он используется для отображения при ссылке на шаблон в журналах WMI, PowerShell, Просмотр событий и отладки. Дополнительные сведения см. в разделе Имя.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Дополнительные сведения см. в разделе Идентификатор.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, отображаемое в пользовательском интерфейсе, локализованное языковым стандартом языка.

Локализованные описания

Необязательное описание шаблона, локализованное языковым стандартом.

Приложение: SettingsLocationTemplate.xsd

Ниже приведен файл SettingsLocationTemplate.xsd с элементами, дочерними элементами, атрибутами и параметрами:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="UevSettingsLocationTemplate"
  targetNamespace="https://schemas.microsoft.com/UserExperienceVirtualization/2013A/SettingsLocationTemplate"
  elementFormDefault="qualified"
  xmlns="https://schemas.microsoft.com/UserExperienceVirtualization/2013A/SettingsLocationTemplate"
  xmlns:mstns="https://schemas.microsoft.com/UserExperienceVirtualization/2013A/SettingsLocationTemplate"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:simpleType name="Guid">
        <xs:restriction base="xs:string">
            <xs:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="FilenameString">
        <xs:restriction base="xs:string">
            <xs:pattern value="[^\\\?\*\|&lt;&gt;/:]+" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="IDString">
        <xs:restriction base="xs:string">
            <xs:pattern value="[^\\\?\*\|&lt;&gt;/:.]+" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="CompositeIDString">
        <xs:restriction base="xs:string">
            <xs:pattern value="[^\\\?\*\|&lt;&gt;/:.]+([.][^\\\?\*\|&lt;&gt;/:.]+)?" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="TemplateVersion">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0" />
            <xs:maxInclusive value="2147483647" />
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Empty">
        <xs:sequence/>
    </xs:complexType>

    <xs:complexType name="LocalizedString">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="Locale" type="xs:string" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="LocalizedName">
        <xs:sequence>
            <xs:element name="Name" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="LocalizedDescription">
        <xs:sequence>
            <xs:element name="Description" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="ReplacedTemplates">
      <xs:sequence>
        <xs:element name="ID" type="CompositeIDString" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Author">
        <xs:all>
            <xs:element name="Name" type="xs:string" minOccurs="1" />
            <xs:element name="Email" type="xs:string" minOccurs="0" />
        </xs:all>
    </xs:complexType>

    <xs:complexType name="Range">
        <xs:attribute name="Minimum" type="xs:integer" use="required"/>
        <xs:attribute name="Maximum" type="xs:integer" use="required"/>
    </xs:complexType>

    <xs:complexType name="ProcessVersion">
        <xs:sequence>
            <xs:element name="Major" type="Range" minOccurs="1" />
            <xs:element name="Minor" type="Range" minOccurs="0" />
            <xs:element name="Build" type="Range" minOccurs="0" />
            <xs:element name="Patch" type="Range" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="Architecture">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Win32"/>
            <xs:enumeration value="Win64"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Process">
        <xs:sequence>
            <xs:element name="Filename" type="FilenameString" minOccurs="1" />
            <xs:element name="Architecture" type="Architecture" minOccurs="0" />
            <xs:element name="ProductName" type="xs:string" minOccurs="0" />
            <xs:element name="FileDescription" type="xs:string" minOccurs="0" />
            <xs:element name="ProductVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="FileVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Processes">
        <xs:sequence>
            <xs:choice minOccurs="1">
                <xs:element name="Process" type="Process" />
                <xs:element name="ShellProcess" type="Empty" />
            </xs:choice>
            <xs:element name="Process" type="Process" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Path">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="Recursive" type="xs:boolean" default="false"/>
                <xs:attribute name="DeleteIfNotFound" type="xs:boolean" default="false"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="RegistrySetting">
        <xs:sequence>
            <xs:element name="Path" type="Path" />
            <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Path" type="Path" minOccurs="0" />
                        <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="FileSetting">
        <xs:sequence>

            <xs:element name="Root">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="KnownFolder" type="Guid" />
                        <xs:element name="RegistryEntry" type="xs:string" />
                        <xs:element name="EnvironmentVariable" type="xs:string" />
                    </xs:choice>
                </xs:complexType>
            </xs:element>

            <xs:element name="Path" minOccurs="0" type="Path" />
            <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

            <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Path" type="Path" minOccurs="0" />
                        <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="CustomActionSetting">
        <xs:restriction base="xs:anyURI"/>
    </xs:simpleType>

    <xs:simpleType name="SystemParameterSetting">
        <xs:restriction base="xs:string">

            <!-- Accessibility parameters -->
            <xs:enumeration value="AccessTimeout"/>
            <xs:enumeration value="AudioDescription"/>
            <xs:enumeration value="ClientAreaAnimation"/>
            <xs:enumeration value="DisableOverlappedContent"/>
            <xs:enumeration value="FilterKeys"/>
            <xs:enumeration value="FocusBorderHeight"/>
            <xs:enumeration value="FocusBorderWidth"/>
            <xs:enumeration value="HighContrast"/>
            <xs:enumeration value="MessageDuration"/>
            <xs:enumeration value="MouseClickLock"/>
            <xs:enumeration value="MouseClickLockTime"/>
            <xs:enumeration value="MouseKeys"/>
            <xs:enumeration value="MouseSonar"/>
            <xs:enumeration value="MouseVanish"/>
            <xs:enumeration value="ScreenReader"/>
            <xs:enumeration value="ShowSounds"/>
            <xs:enumeration value="SoundSentry"/>
            <xs:enumeration value="StickyKeys"/>
            <xs:enumeration value="ToggleKeys"/>

            <!-- Input parameters -->
            <xs:enumeration value="Beep"/>
            <xs:enumeration value="BlockSendInputResets"/>
            <xs:enumeration value="DefaultInputLang"/>
            <xs:enumeration value="DoubleClickTime"/>
            <xs:enumeration value="DoubleClkHeight"/>
            <xs:enumeration value="DoubleClkWidth"/>
            <xs:enumeration value="KeyboardCues"/>
            <xs:enumeration value="KeyboardDelay"/>
            <xs:enumeration value="KeyboardPref"/>
            <xs:enumeration value="KeyboardSpeed"/>
            <xs:enumeration value="Mouse"/>
            <xs:enumeration value="MouseButtonSwap"/>
            <xs:enumeration value="MouseHoverHeight"/>
            <xs:enumeration value="MouseHoverTime"/>
            <xs:enumeration value="MouseHoverWidth"/>
            <xs:enumeration value="MouseSpeed"/>
            <xs:enumeration value="MouseTrails"/>
            <xs:enumeration value="SnapToDefButton"/>
            <xs:enumeration value="WheelScrollChars"/>
            <xs:enumeration value="WheelScrollLines"/>

            <!-- Desktop parameters (limited subset) -->
            <xs:enumeration value="DeskWallpaper"/>
            <xs:enumeration value="DesktopColor"/>

        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Settings">
        <xs:sequence>
            <xs:element name="Asynchronous" type="xs:boolean" minOccurs="0" />
            <xs:element name="PreventOverlappingSynchronization" type="xs:boolean" minOccurs="0" />
            <xs:element name="AlwaysApplySettings" type="xs:boolean" minOccurs="0" />
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="Registry" type="RegistrySetting" />
                <xs:element name="File" type="FileSetting" />
                <xs:element name="SystemParameter" type="SystemParameterSetting" />
                <xs:element name="CustomAction" type="CustomActionSetting" />
            </xs:choice>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Common">
        <xs:sequence>
            <xs:element name="Name" type="xs:string" />
            <xs:element name="ID" type="IDString" />
            <xs:element name="ReplacedTemplates" type="ReplacedTemplates" minOccurs="0" />
            <xs:element name="Description" type="xs:string" minOccurs="0" />
            <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
            <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
            <xs:element name="Version" type="xs:integer" />
            <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
            <xs:element name="DeferToOffice365" type="Empty" minOccurs="0" />
            <xs:element name="Settings" type="Settings" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Application">
        <xs:sequence>
            <xs:element name="Name" type="xs:string" />
            <xs:element name="ID" type="IDString" />
            <xs:element name="ReplacedTemplates" type="ReplacedTemplates" minOccurs="0" />
            <xs:element name="Description" type="xs:string" minOccurs="0" />
            <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
            <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
            <xs:element name="Version" type="xs:integer" />
            <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
            <xs:element name="DeferToOffice365" type="Empty" minOccurs="0" />
            <xs:element name="Processes" type="Processes" />
            <xs:element name="Settings" type="Settings" />
        </xs:sequence>
    </xs:complexType>


    <xs:element name="SettingsLocationTemplate">
        <xs:complexType>
            <xs:sequence>

                <xs:element name="Name" type="xs:string" />
                <xs:element name="ID" type="IDString" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
                <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />

                <xs:choice>

                    <!-- Single application -->
                    <xs:sequence>
                        <xs:element name="ReplacedTemplates" type="ReplacedTemplates" minOccurs="0" />
                        <xs:element name="Version" type="TemplateVersion" />
                        <xs:element name="Author" type="Author" minOccurs="0" />
                        <xs:element name="FixedProfile" type="xs:string"  minOccurs="0" />
                        <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
                        <xs:element name="DeferToOffice365" type="Empty" minOccurs="0" />
                        <xs:element name="Processes" type="Processes" />
                        <xs:element name="Settings" type="Settings" />
                    </xs:sequence>

                    <!-- Suite of applications -->
                    <xs:sequence>
                        <xs:element name="ManageSuiteOnly" type="xs:boolean" minOccurs="0" />
                        <xs:element name="Author" type="Author" minOccurs="0" />
                        <xs:element name="FixedProfile" type="xs:string"  minOccurs="0" />
                        <xs:element name="Common" type="Common" />
                        <xs:element name="Application" type="Application" minOccurs="2" maxOccurs="unbounded" />
                    </xs:sequence>

                </xs:choice>

            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- SettingsLocationTemplate -->

</xs:schema>

Справочник по схеме шаблона приложения UE-V 2.0

В этом разделе подробно описана XML-структура шаблона расположения параметров UE-V 2.0 и приведены рекомендации по редактированию этого файла.

В этом разделе

Атрибут объявления и кодирования XML

Обязательный: True

Тип: String

В объявлении XML должен быть указан атрибут XML версии 1.0 (<?xml version="1.0">). Шаблоны расположения параметров, созданные генератором UE-V, сохраняются в кодировке UTF-8, хотя кодировка явно не указана. Рекомендуется включить атрибут encoding="UTF-8" в этот элемент, как рекомендуется. Все шаблоны, включенные в продукт, также указывают этот тег (см. документы в %ProgramFiles%\Виртуализация средств взаимодействия с пользователем (Майкрософт)\Templates для справки). Пример:

<?xml version="1.0" encoding="UTF-8"?>

Пространство имен и корневой элемент

Обязательный: True

Тип: String

UE-V использует https://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate пространство имен для всех приложений. SettingsLocationTemplate является корневым элементом и содержит все остальные элементы. Ссылка SettingsLocationTemplate во всех шаблонах с помощью этого тега:

<SettingsLocationTemplate xmlns='https://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate'>

Типы данных

Это типы данных для схемы шаблона приложения UE-V.

GUID GUID описывает стандартное глобально уникальное регулярное выражение идентификатора в виде "\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}. Используется в элементе Filesetting\Root\KnownFolder для проверки форматирования известных папок.

FilenameString FilenameString ссылается на имя файла процесса, который необходимо отслеживать. Его значения ограничены регулярным выражением [^\\\?\\*\|<>/:]+, (то есть они не могут содержать символы обратной косой черты, звездочки или вопросительного знака wild-карта символы, символы конвейера, символы больше или меньше знака, косой черты или двоеточия).

IDString IDString — это значение идентификатора элементов Application, SettingsLocationTemplate и Common (используется для описания наборов приложений с общими параметрами). Он ограничен тем же регулярным выражением, что и FilenameString ([^\\\?\*\|<>/:]+).

TemplateVersion TemplateVersion — это целочисленное значение, используемое для описания редакции шаблона расположения параметров. Его значение может варьироваться от 0 до 2147483647.

Пустой Пустой означает значение NULL. Этот параметр используется в Process\ShellProcess, чтобы указать на отсутствие процесса для мониторинга. Это значение не должно использоваться ни в каких шаблонах приложений.

Автор Тип данных Author — это сложный тип, который определяет автора шаблона. Он содержит два дочерних элемента: Name и Email. В типе данных Author элемент Name является обязательным, а элемент Email является необязательным. Этот тип описан более подробно в элементе SettingsLocationTemplate.

Диапазон Range определяет целочисленный класс, состоящий из двух дочерних элементов: Minimum и Maximum. Этот тип данных реализован в типе данных ProcessVersion. Если задано значение , необходимо включить значения Минимальное и Максимальное.

ProcessVersion ProcessVersion определяет тип с четырьмя дочерними элементами: Основной, Дополнительный, Сборка и Исправление. Этот тип данных используется элементом Process для заполнения значений ProductVersion и FileVersion. Данные для этого типа являются значением Range. Основной дочерний элемент является обязательным, а остальные — необязательным.

Архитектура Архитектура перечисляет два возможных значения: Win32 и Win64. Эти значения используются для указания архитектуры процесса.

Процесс Тип данных Process — это контейнер, используемый для описания процессов, отслеживаемых UE-V. Он содержит шесть дочерних элементов: Filename, Architecture, ProductName, FileDescription, ProductVersion и FileVersion. В этой таблице подробно описаны соответствующие типы данных каждого элемента:

Элемент Тип данных Обязательное

Имени файла

FilenameString

True

Architecture (Архитектура)

Architecture (Архитектура)

False

ProductName

Строка

False

FileDescription

Строка

False

ProductVersion

ProcessVersion

False

FileVersion

ProcessVersion

False

Процессов Тип данных Processes представляет контейнер для коллекции из одного или нескольких элементов Process. В типе последовательности процессов поддерживаются два дочерних элемента: Process и ShellProcess. Process — это элемент типа Process, а shellProcess имеет тип данных Empty. В последовательности должен быть определен по крайней мере один элемент.

Путь Путь используется RegistrySetting и FileSetting для ссылки на пути к реестру и файлам. Этот элемент поддерживает два необязательных атрибута: Recursive и DeleteIfNotFound. Для обоих значений задано значение default="False".

Рекурсивный указывает, что путь и все вложенные папки включены для параметров файла или что для параметров реестра включены все дочерние разделы реестра. В обоих случаях все элементы на текущем уровне включаются в захваченные данные. Для объекта FileSettings все файлы в указанной папке включаются в данные, захваченные UE-V, но папки не включаются. Для путей реестра все значения в текущем пути записываются, но дочерние разделы реестра не записываются. В обоих случаях следует соблюдать осторожность, чтобы избежать записи больших наборов данных или большого количества элементов.

Атрибут DeleteIfNotFound удаляет параметр из данных пути к хранилищу параметров пользователя. Это может быть желательно в тех случаях, когда удаление этих параметров из пакета сэкономит большой объем дискового пространства на файловом сервере пути к хранилищу параметров.

FileMask FileMask указывает только определенные типы файлов для папки, определенной путем. Например, Путь может иметь значение C:\users\username\files , а FileMask — *.txt для включения только текстовых файлов.

RegistrySetting RegistrySetting представляет контейнер для разделов и значений реестра и соответствующего требуемого поведения агента UE-V. В этом типе определены четыре дочерних элемента: Path, Name, Exclude и последовательность значений Path и Name.

FileSetting FileSetting содержит параметры, связанные с файлами и путями к файлам. Определены четыре дочерних элемента: Root, Path, FileMask и Exclude. Root является обязательным, а остальные — необязательными.

Параметры Параметры — это контейнер для всех параметров, применимых к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction, описанных ранее. Кроме того, он также может содержать следующие дочерние элементы с описанным поведением:

Элемент Описание

Асинхронная репликация

Пакеты асинхронных параметров применяются без блокировки запуска приложения, поэтому запуск приложения продолжается, пока параметры еще применяются. Это полезно для параметров, которые могут применяться асинхронно, например get/set с помощью API, например SystemParameterSetting.

PreventOverlappingSynchronization

По умолчанию UE-V сохраняет параметры только для приложения, когда последний экземпляр приложения, использующий шаблон, закрыт. Если для этого элемента задано значение false, UE-V экспортирует параметры, даже если выполняются другие экземпляры приложения. Подходящие шаблоны ( те, которые содержат раздел элемента Common), которые поставляются с UE-V, используют этот флаг, чтобы разрешить общий экспорт параметров при закрытии приложения, предотвращая экспорт параметров приложения до закрытия последнего экземпляра.

Элемент Name

Обязательный: True

Тип: String

Имя указывает уникальное имя шаблона расположения параметров. Он используется для отображения при ссылке на шаблон в журналах WMI, PowerShell, Просмотр событий и отладки. Как правило, не следует ссылаться на сведения о версии, так как это можно возразить из элемента ProductVersion. Например, укажите <Name>My Application</Name> вместо <Name>My Application 1.1</Name>.

Примечание UE-V не ссылается на внешние DTD, поэтому невозможно использовать именованные сущности в шаблоне расположения параметров. Например, не используйте ® для ссылки на знак зарегистрированной торговой марки ® . Вместо этого используйте канонические нумерованные ссылки, чтобы включить эти типы специальных символов, например ® для символа ®. Это правило применяется ко всем строковым значениям в этом документе.

Полный список сущностей символов см. в этой статье http://www.w3.org/TR/xhtml1/dtds.html . Документы в кодировке UTF-8 могут содержать символы Юникода напрямую. Сохранение шаблонов с помощью генератора UE-V автоматически преобразует сущности символов в их представления в Юникоде.

Элемент ID

Обязательный: True

Тип: String

Идентификатор заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения (например, см. выходные данные Get-UevTemplate и Get-UevTemplateProgram командлетов PowerShell). По соглашению этот тег не должен содержать пробелы, что упрощает создание скриптов. Номера версий приложений должны быть указаны в этом элементе, чтобы упростить идентификацию шаблона, например <ID>MicrosoftCalculator6</ID> или <ID>MicrosoftOffice2010Win64</ID>.

Элемент Version

Обязательный: True

Тип: Целое число

Минимальное значение: 0

Максимальное значение: 2147483647

Версия определяет версию шаблона расположения параметров для административного отслеживания изменений. Генератор UE-V автоматически увеличивает это число на единицу при каждом сохранении шаблона. Обратите внимание, что это поле должно быть целым числом; дробные значения, такие как <Version>2.5</Version> , не допускаются.

Подсказка: Заметки об изменениях версий можно сохранять с помощью тегов комментариев <!-- -->XML, например:

<!--
    Version History

    Version 1 Jul 05, 2012 Initial template created by Generator - Denise@Contoso.com
    Version 2 Jul 31, 2012 Added support for app.exe v2.1.3 - Mark@Contoso.com
    Version 3 Jan 01, 2013 Added font settings support - Mark@Contoso.com
    Version 4 Jan 31, 2013 Added support for plugin settings - Tony@Contoso.com
  -->
<Version>4</Version>

Важно Это значение запрашивается, чтобы определить, следует ли применять новую версию шаблона к существующему шаблону в следующих экземплярах:

  • При выполнении запланированной задачи автоматического обновления шаблона

  • При выполнении командлета PowerShell Update-UevTemplate

  • Когда метод microsoft\uev:SettingsLocationTemplate Update вызывается через WMI

Элемент Author

Обязательный: False

Тип: String

Автор определяет создателя шаблона расположения параметров. Поддерживаются два необязательных дочерних элемента: Name и Email. Оба атрибута являются необязательными, но если указан Email дочерний элемент, он должен сопровождаться элементом Name. Автор ссылается на полное имя контакта для шаблона расположения параметров, а адрес электронной почты должен ссылаться на адрес электронной почты автора. Рекомендуется включить эти сведения в шаблоны, опубликованные публично, например в коллекции шаблонов UE-V.

Processes and Process Element

Обязательный: True

Тип: Элемент

Процессы содержат по крайней мере один <Process> элемент, который, в свою очередь, содержит следующие дочерние элементы: Filename, Architecture, ProductName, FileDescription, ProductVersion и FileVersion. Дочерний элемент Filename является обязательным, а остальные — необязательными. Полностью заполненный элемент содержит теги, аналогичные следующему примеру:

<Process>
  <Filename>MyApplication.exe</Filename>
  <Architecture>Win64</Architecture>
  <ProductName> MyApplication </ProductName>
  <FileDescription>MyApplication.exe</FileDescription>
  <ProductVersion>
    <Major Minimum="2" Maximum="2" />
    <Minor Minimum="0" Maximum="0" />
    <Build Minimum="0" Maximum="0" />
    <Patch Minimum="5" Maximum="5" />
  </ProductVersion>
  <FileVersion>
    <Major Minimum="2" Maximum="2" />
    <Minor Minimum="0" Maximum="0" />
    <Build Minimum="0" Maximum="0" />
    <Patch Minimum="5" Maximum="5" />
  </FileVersion>
</Process>

Имени файла

Обязательный: True

Тип: String

Имя файла — это фактическое имя файла исполняемого файла, отображаемое в файловой системе. Этот элемент задает основное условие, которое UE-V использует для оценки того, применяется ли шаблон к процессу. Этот элемент должен быть указан в XML-файле шаблона расположения параметров.

Допустимые имена файлов не должны соответствовать регулярному выражению [^\\\?\\|<>/:]+, то есть они не могут содержать символы обратной косой черты, звездочки или вопросительного знака wild-карта символы, символы конвейера, больше или меньше знака, косой черты или двоеточия (\ ? * | <> или : символы.).

Подсказка: Чтобы протестировать строку для этого регулярного выражения, используйте командное окно PowerShell и замените имя исполняемого файла именем YourFileName:

"YourFileName.exe" -match "[\\\?\*\|<>/:]+"

Значение True указывает, что строка содержит недопустимые символы. Ниже приведены некоторые примеры недопустимых значений.

  • \\server\share\program.exe

  • Программа*.exe

  • Pro?ram.exe

  • Программа<1>.exe

Примечание Генератор UE-V кодирует символы больше и меньше, > чем и < соответственно.

В редких случаях значение FileName не обязательно будет включать расширение .exe, но оно должно быть указано как часть значения. Например, <Filename>MyApplictication.exe</Filename> следует указать вместо <Filename>MyApplictication</Filename>. Во втором примере шаблон не применяется к процессу, если фактическое имя исполняемого файла — "MyApplication.exe".

Architecture (Архитектура)

Обязательный: False

Тип: Архитектура (строка)

Архитектура относится к архитектуре процессора, для которой был скомпилирован целевой исполняемый файл. Допустимые значения: Win32 для 32-разрядных приложений или Win64 для 64-разрядных приложений. Если он имеется, этот тег ограничивает применимость шаблона расположения параметров к определенной архитектуре приложения. В качестве примера сравните файлы %ProgramFiles%\Виртуализация средств взаимодействия с пользователем (Майкрософт)\templates\ MicrosoftOffice2010Win32.xml и MicrosoftOffice2010Win64.xml, включенные в UE-V. Это полезно, если относительные пути меняются между разными версиями исполняемого файла или если параметры были добавлены или удалены при переходе от одной архитектуры процессора к другой.

Если этот элемент отсутствует, шаблон расположения параметров игнорирует архитектуру процесса и применяется как к 32-разрядным, так и к 64-разрядным процессам, если применяются имя файла и другие атрибуты.

Примечание UE-V не поддерживает процессоры ARM в этой версии.

ProductName

Обязательный: False

Тип: String

ProductName — это необязательный элемент, используемый для идентификации продукта в целях администрирования или создания отчетов. ProductName отличается от filename тем, что нет ограничений регулярного выражения на его значение. Это позволяет получить более понятные описания процесса, в котором имя исполняемого файла может быть неочевидным. Пример:

<Process>
  <Filename>MyApplication.exe</Filename>
  <ProductName>My Application 6.x by Contoso.com</ProductName>
  <ProductVersion>
    <Major Minimum="6" Maximum="6" />
  </ProductVersion>
</Process>

FileDescription

Обязательный: False

Тип: String

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

Например, в подходящем приложении может быть полезно предоставить напоминания о функции двух исполняемых файлов (MyApplication.exe и MyApplicationHelper.exe), как показано ниже:

<Processes>
  <Process>
    <Filename>MyApplication.exe</Filename>
    <FileDescription>My Application Main Engine</ FileDescription>
    <ProductVersion>
      <Major Minimum="6" Maximum="6" />
    </ProductVersion>
  </Process>
  <Process>
    <Filename>MyApplicationHelper.exe</Filename>
    <FileDescription>My Application Background Process Executable</FileDescription>
    <ProductVersion>
      <Major Minimum="6" Maximum="6" />
    </ProductVersion>
  </Process>
</Processes>

ProductVersion

Обязательный: False

Тип: String

ProductVersion относится к основным и дополнительным версиям продукта файла, а также к уровню сборки и исправлений. ProductVersion является необязательным элементом, но если он указан, он должен содержать по крайней мере дочерний элемент Major. Значение должно выражать диапазон в форме Minimum="X" Maximum="Y", где X и Y являются целыми числами. Значения Минимум и Максимум могут быть идентичными.

Элементы версии продукта и файла могут быть оставлены неуказанными. Это делает шаблон "не зависящим от версии", то есть шаблон будет применяться ко всем версиям указанного исполняемого файла.

Пример 1.

Версия продукта: 1.0, указанная в генераторе UE-V, создает следующий XML-код:

<ProductVersion>
  <Major Minimum="1" Maximum="1" />
  <Minor Minimum="0" Maximum="0" />
</ProductVersion>

Пример 2.

Версия файла: 5.0.2.1000, указанная в генераторе UE-V, создает следующий XML-код:

<FileVersion>
  <Major Minimum="5" Maximum="5" />
  <Minor Minimum="0" Maximum="0" />
  <Build Minimum="2" Maximum="2" />
  <Patch Minimum="1000" Maximum="1000" />
</FileVersion>

Неправильный пример 1 — неполный диапазон:

Присутствует только атрибут Minimum. Максимальное значение также должно быть включено в диапазон.

<ProductVersion>
  <Major Minimum="2" />
</ProductVersion>

Неправильный пример 2. Дополнительный параметр, указанный без элемента Major:

Присутствует только элемент Minor. Майор также должен быть включен.

<ProductVersion>
  <Minor Minimum="0" Maximum="0" />
</ProductVersion>

FileVersion

Обязательный: False

Тип: String

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

Чтобы определить версию продукта и версию файла конкретного исполняемого файла, щелкните правой кнопкой мыши файл в Windows Обозреватель, выберите Свойства, а затем перейдите на вкладку Сведения.

Включение элемента FileVersion для приложения обеспечивает более детализированную логику точной настройки обнаружения, но не требуется для большинства приложений. Сначала проверяются параметры элемента ProductVersion, а затем — FileVersion. Будет применен более строгий параметр.

Дочерние элементы и правила синтаксиса для FileVersion идентичны элементам ProductVersion.

<Process>
  <Filename>MSACCESS.EXE</Filename>
  <Architecture>Win32</Architecture>
  <ProductVersion>
    <Major Minimum="14" Maximum="14" />
    <Minor Minimum="0" Maximum="0" />
  </ProductVersion>
  <FileVersion>
    <Major Minimum="14" Maximum="14" />
    <Minor Minimum="0" Maximum="0" />
  </FileVersion>
</Process>

Элемент Application

Приложение — это контейнер для параметров, применяемых к конкретному приложению. Это коллекция следующих полей и типов.

Поле или тип Описание

Name

Задает уникальное имя для шаблона расположения параметров. Он используется для отображения при ссылке на шаблон в журналах WMI, PowerShell, Просмотр событий и отладки. Дополнительные сведения см. в разделе Имя.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Дополнительные сведения см. в разделе Идентификатор.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, отображаемое в пользовательском интерфейсе, локализованное языковым стандартом языка.

Локализованные описания

Необязательное описание шаблона, локализованное языковым стандартом.

Версия

Определяет версию шаблона расположения параметров для административного отслеживания изменений. Дополнительные сведения см. в разделе Версия.

DeferToMSAccount

Определяет, включен ли этот шаблон вместе с учетной записью Майкрософт. Если для пользователя на компьютере включена синхронизация MSA, этот шаблон будет автоматически отключен.

DeferToOffice365

Как и в случае с MSA, этот шаблон определяет, включен ли этот шаблон вместе с Office365. Если для синхронизации параметров используется Office 365, этот шаблон будет автоматически отключен.

Процессы

Контейнер для коллекции из одного или нескольких элементов Process. Дополнительные сведения см. в разделе Процессы.

Параметры

Контейнер для всех параметров, применяемых к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction. Дополнительные сведения см. в разделе Параметры в типах данных.

Элемент Common

Common похож на элемент Application, но он всегда связан с двумя или более элементами Application. Раздел Общие представляет набор параметров, которые совместно используются этими экземплярами приложения. Это коллекция следующих полей и типов.

Поле или тип Описание

Name

Задает уникальное имя для шаблона расположения параметров. Он используется для отображения при ссылке на шаблон в журналах WMI, PowerShell, Просмотр событий и отладки. Дополнительные сведения см. в разделе Имя.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Дополнительные сведения см. в разделе Идентификатор.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, отображаемое в пользовательском интерфейсе, локализованное языковым стандартом языка.

Локализованные описания

Необязательное описание шаблона, локализованное языковым стандартом.

Версия

Определяет версию шаблона расположения параметров для административного отслеживания изменений. Дополнительные сведения см. в разделе Версия.

DeferToMSAccount

Определяет, включен ли этот шаблон вместе с учетной записью Майкрософт. Если для пользователя на компьютере включена синхронизация MSA, этот шаблон будет автоматически отключен.

DeferToOffice365

Как и в случае с MSA, этот шаблон определяет, включен ли этот шаблон вместе с Office365. Если для синхронизации параметров используется Office 365, этот шаблон будет автоматически отключен.

Параметры

Контейнер для всех параметров, применяемых к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction. Дополнительные сведения см. в разделе Параметры в типах данных.

Элемент SettingsLocationTemplate

Этот элемент определяет параметры для одного приложения или набора приложений.

Поле или тип Описание

Name

Задает уникальное имя для шаблона расположения параметров. Он используется для отображения при ссылке на шаблон в журналах WMI, PowerShell, Просмотр событий и отладки. Дополнительные сведения см. в разделе Имя.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Дополнительные сведения см. в разделе Идентификатор.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, отображаемое в пользовательском интерфейсе, локализованное языковым стандартом языка.

Локализованные описания

Необязательное описание шаблона, локализованное языковым стандартом.

Приложение: SettingsLocationTemplate.xsd

Ниже приведен файл SettingsLocationTemplate.xsd с элементами, дочерними элементами, атрибутами и параметрами:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="UevSettingsLocationTemplate"
  targetNamespace="https://schemas.microsoft.com/UserExperienceVirtualization/2013/SettingsLocationTemplate"
  elementFormDefault="qualified"
  xmlns="https://schemas.microsoft.com/UserExperienceVirtualization/2013/SettingsLocationTemplate"
  xmlns:mstns="https://schemas.microsoft.com/UserExperienceVirtualization/2013/SettingsLocationTemplate"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:simpleType name="Guid">
    <xs:restriction base="xs:string">
      <xs:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FilenameString">
    <xs:restriction base="xs:string">
      <xs:pattern value="[^\\\?\*\|&lt;&gt;/:]+" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="IDString">
    <xs:restriction base="xs:string">
      <xs:pattern value="[^\\\?\*\|&lt;&gt;/:.]+" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="TemplateVersion">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="0" />
      <xs:maxInclusive value="2147483647" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Empty">
    <xs:sequence/>
  </xs:complexType>

  <xs:complexType name="LocalizedString">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="Locale" type="xs:string" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="LocalizedName">
    <xs:sequence>
      <xs:element name="Name" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LocalizedDescription">
    <xs:sequence>
      <xs:element name="Description" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Author">
    <xs:all>
      <xs:element name="Name" type="xs:string" minOccurs="1" />
      <xs:element name="Email" type="xs:string" minOccurs="0" />
    </xs:all>
  </xs:complexType>

  <xs:complexType name="Range">
    <xs:attribute name="Minimum" type="xs:integer" use="required"/>
    <xs:attribute name="Maximum" type="xs:integer" use="required"/>
  </xs:complexType>

  <xs:complexType name="ProcessVersion">
    <xs:sequence>
      <xs:element name="Major" type="Range" minOccurs="1" />
      <xs:element name="Minor" type="Range" minOccurs="0" />
      <xs:element name="Build" type="Range" minOccurs="0" />
      <xs:element name="Patch" type="Range" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="Architecture">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Win32"/>
      <xs:enumeration value="Win64"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Process">
    <xs:sequence>
      <xs:element name="Filename" type="FilenameString" minOccurs="1" />
      <xs:element name="Architecture" type="Architecture" minOccurs="0" />
      <xs:element name="ProductName" type="xs:string" minOccurs="0" />
      <xs:element name="FileDescription" type="xs:string" minOccurs="0" />
      <xs:element name="ProductVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="FileVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Processes">
    <xs:sequence>
      <xs:choice minOccurs="1">
        <xs:element name="Process" type="Process" />
        <xs:element name="ShellProcess" type="Empty" />
      </xs:choice>
      <xs:element name="Process" type="Process" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Path">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="Recursive" type="xs:boolean" default="false"/>
        <xs:attribute name="DeleteIfNotFound" type="xs:boolean" default="false"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="RegistrySetting">
    <xs:sequence>
      <xs:element name="Path" type="Path" />
      <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Path" type="Path" minOccurs="0" />
            <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FileSetting">
    <xs:sequence>

      <xs:element name="Root">
        <xs:complexType>
          <xs:choice>
            <xs:element name="KnownFolder" type="Guid" />
            <xs:element name="RegistryEntry" type="xs:string" />
            <xs:element name="EnvironmentVariable" type="xs:string" />
          </xs:choice>
        </xs:complexType>
      </xs:element>

      <xs:element name="Path" minOccurs="0" type="Path" />
      <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

      <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Path" type="Path" minOccurs="0" />
            <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>

    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="SystemParameterSetting">
    <xs:restriction base="xs:string">

      <!-- Accessibility parameters -->
      <xs:enumeration value="AccessTimeout"/>
      <xs:enumeration value="AudioDescription"/>
      <xs:enumeration value="ClientAreaAnimation"/>
      <xs:enumeration value="DisableOverlappedContent"/>
      <xs:enumeration value="FilterKeys"/>
      <xs:enumeration value="FocusBorderHeight"/>
      <xs:enumeration value="FocusBorderWidth"/>
      <xs:enumeration value="HighContrast"/>
      <xs:enumeration value="MessageDuration"/>
      <xs:enumeration value="MouseClickLock"/>
      <xs:enumeration value="MouseClickLockTime"/>
      <xs:enumeration value="MouseKeys"/>
      <xs:enumeration value="MouseSonar"/>
      <xs:enumeration value="MouseVanish"/>
      <xs:enumeration value="ScreenReader"/>
      <xs:enumeration value="ShowSounds"/>
      <xs:enumeration value="SoundSentry"/>
      <xs:enumeration value="StickyKeys"/>
      <xs:enumeration value="ToggleKeys"/>

      <!-- Input parameters -->
      <xs:enumeration value="Beep"/>
      <xs:enumeration value="BlockSendInputResets"/>
      <xs:enumeration value="DefaultInputLang"/>
      <xs:enumeration value="DoubleClickTime"/>
      <xs:enumeration value="DoubleClkHeight"/>
      <xs:enumeration value="DoubleClkWidth"/>
      <xs:enumeration value="KeyboardCues"/>
      <xs:enumeration value="KeyboardDelay"/>
      <xs:enumeration value="KeyboardPref"/>
      <xs:enumeration value="KeyboardSpeed"/>
      <xs:enumeration value="Mouse"/>
      <xs:enumeration value="MouseButtonSwap"/>
      <xs:enumeration value="MouseHoverHeight"/>
      <xs:enumeration value="MouseHoverTime"/>
      <xs:enumeration value="MouseHoverWidth"/>
      <xs:enumeration value="MouseSpeed"/>
      <xs:enumeration value="MouseTrails"/>
      <xs:enumeration value="SnapToDefButton"/>
      <xs:enumeration value="WheelScrollChars"/>
      <xs:enumeration value="WheelScrollLines"/>

      <!-- Desktop parameters (limited subset) -->
      <xs:enumeration value="DeskWallpaper"/>
      <xs:enumeration value="DesktopColor"/>

    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Settings">
    <xs:sequence>
      <xs:element name="Asynchronous" type="xs:boolean" minOccurs="0" />
      <xs:element name="PreventOverlappingSynchronization" type="xs:boolean" minOccurs="0" />
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Registry" type="RegistrySetting" />
        <xs:element name="File" type="FileSetting" />
        <xs:element name="SystemParameter" type="SystemParameterSetting" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Common">
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <xs:element name="ID" type="IDString" />
      <xs:element name="Description" type="xs:string" minOccurs="0" />
      <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
      <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
      <xs:element name="Version" type="xs:integer" />
      <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
      <xs:element name="Settings" type="Settings" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Application">
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <xs:element name="ID" type="IDString" />
      <xs:element name="Description" type="xs:string" minOccurs="0" />
      <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
      <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
      <xs:element name="Version" type="xs:integer" />
      <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
      <xs:element name="Processes" type="Processes" />
      <xs:element name="Settings" type="Settings" />
    </xs:sequence>
  </xs:complexType>


  <xs:element name="SettingsLocationTemplate">
    <xs:complexType>
      <xs:sequence>

        <xs:element name="Name" type="xs:string" />
        <xs:element name="ID" type="IDString" />
        <xs:element name="Description" type="xs:string" minOccurs="0" />
        <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
        <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />

        <xs:choice>

          <!-- Single application -->
          <xs:sequence>
            <xs:element name="Version" type="TemplateVersion" />
            <xs:element name="Author" type="Author" minOccurs="0" />
            <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
            <xs:element name="Processes" type="Processes" />
            <xs:element name="Settings" type="Settings" />
          </xs:sequence>

          <!-- Suite of applications -->
          <xs:sequence>
            <xs:element name="ManageSuiteOnly" type="xs:boolean" minOccurs="0" />
            <xs:element name="Author" type="Author" minOccurs="0" />
            <xs:element name="Common" type="Common" />
            <xs:element name="Application" type="Application" minOccurs="2" maxOccurs="unbounded" />
          </xs:sequence>

        </xs:choice>

      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <!-- SettingsLocationTemplate -->

</xs:schema>

Работа с пользовательскими шаблонами UE-V 2.x и генератором UE-V 2.x

Технический справочник по UE-V 2.x