Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обзор
Функция гибкой виртуализации позволяет приложению объявить, что некоторый набор его файлов и записей реестра должен отображаться другим приложениям; и что они должны сохраняться при удалении приложения. Все остальные файлы и записи реестра не видны другим приложениям; и удаляются при удалении.
Управление виртуализацией выбранных расположений
Замечание
Поведение, описанное в этом разделе, появилось в Windows 10 версии 21H1.
Начиная с Windows 10 версии 21H1, система сохраняет существующее поведение ограниченной возможности невиртуализированных ресурсов, а также свойства RegistryWriteVirtualization и FilesystemWriteVirtualization. Кроме того, система добавляет возможность указания определенных папок и (или) разделов реестра, которые необходимо освободить от виртуализации.
- Вы можете объявить только расположения файловой системы, находящиеся в пределах
%USERPROFILE%\AppData
. - Вы можете указывать только те расположения реестра, которые находятся в HKCU.
Вот пример.
<!-- Declare the desktop6 and/or virtualization XML namespace where the virtualization properties are defined, and include this in the list of ignorable namespaces. -->
<!-- Declare the XML namespace for the required restricted capability, and include it in the list of ignorable namespaces. -->
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:desktop6="http://schemas.microsoft.com/appx/manifest/desktop/windows10/6"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
xmlns:virtualization="http://schemas.microsoft.com/appx/manifest/virtualization/windows10"
IgnorableNamespaces="rescap desktop6 virtualization">
<!-- ... -->
<!-- Other entries omitted for brevity. -->
<!-- ... -->
<Properties>
<!-- If you don't want virtualization of registry writes to HKEY_CURRENT_USER, then include the property, and set it to disabled. -->
<desktop6:RegistryWriteVirtualization>disabled</desktop6:RegistryWriteVirtualization>
<!-- If you don't want virtualization of file system writes to the user's AppData folder, then include the property, and set it to disabled. -->
<desktop6:FileSystemWriteVirtualization>disabled</desktop6:FileSystemWriteVirtualization>
<!-- On Windows 10, version 21H1 and later OS versions, you can declare specific file system and/or registry locations that you want to be unvirtualized.
If these are recognized on the current device, then they take precedence over the old declarations. On older devices,
the new declarations are ignored and the old ones are honored. -->
<virtualization:FileSystemWriteVirtualization>
<virtualization:ExcludedDirectories>
<virtualization:ExcludedDirectory>$(KnownFolder:LocalAppData)\Fabrikam\Widgets</virtualization:ExcludedDirectory>
<virtualization:ExcludedDirectory>$(KnownFolder:RoamingAppData)\Fabrikam\Widgets</virtualization:ExcludedDirectory>
</virtualization:ExcludedDirectories>
</virtualization:FileSystemWriteVirtualization>
<virtualization:RegistryWriteVirtualization>
<virtualization:ExcludedKeys>
<virtualization:ExcludedKey>HKEY_CURRENT_USER\Software\Fabrikam\Widgets</virtualization:ExcludedKey>
</virtualization:ExcludedKeys>
</virtualization:RegistryWriteVirtualization>
</Properties>
<Capabilities>
<!-- Include the required restricted capability. -->
<rescap:Capability Name="unvirtualizedResources"/>
</Capabilities>
</Package>
Замечание
Если ваше приложение объявляет как предварительную версию Windows 10, версию 21H1, так и синтаксис Windows 10 версии 21H1, то старое объявление будет использоваться в версиях до Windows 10 версии 21H1, а новое объявление будет использоваться в предварительной версии Windows 10 версии 21H1 и более поздних версий.
Механизмы до Windows 10 версии 21H1
В традиционных средах приложения могут создавать, обновлять и удалять файлы в большинстве мест в файловой системе. Они могут создавать, обновлять и удалять записи в реестре Windows. Эти файлы и записи реестра видны другим приложениям в системе, даже если они часто не должны быть. Кроме того, при удалении приложения эти файлы и записи реестра часто остаются позади и становятся загромождными.
На универсальной платформе Windows (UWP) такие файлы и записи реестра виртуализируются так, что только приложение, которое их записывает, может их увидеть. И они удаляются при удалении приложения. Но существуют допустимые сценарии, в которых приложение хочет, чтобы такие файлы и записи реестра отображались для других приложений. Кроме того, для других приложений может потребоваться сохранение этих файлов и записей даже после удаления приложения, написавшее их.
Поведение MSIX по умолчанию
Местоположение | Контекст | Описание |
---|---|---|
HKCU | Время установки |
|
HKCU | Время выполнения |
|
HKLM | Время установки |
|
HKLM | Время выполнения |
|
Известные папки | Время установки |
|
AppData (AppData) | Время выполнения |
|
Ограниченная unvirtualizedResources
функция
Замечание
Поддержка ограниченной unvirtualizedResources
возможности появилась в Windows 10 версии 1903 (10.0; Сборка 18362), также известная как обновление Windows 10 мая 2019 г.
Приложение может объявить unvirtualizedResources
ограниченную возможность и задать свойства RegistryWriteVirtualization и/или FilesystemWriteVirtualization на true
, чтобы получить право записи в HKCU и/или в AppData. Это позволяет включить ситуацию, когда приложение должно записывать записи, которые затем видны другим процессам за пределами пакета. Например, игры записывают данные сохранения в AppData, и эти данные должны сохраняться даже после удаления игры.
Недвижимость | Описание |
---|---|
RegistryWriteVirtualization=отключено | Записи в HKCU отправляются в невиртуализированное расположение, видны другим процессам за пределами пакета и не очищаются при удалении приложения. |
FilesystemWriteVirtualization=отключено | Записи в AppData отправляются в невиртуализированное расположение, видны другим процессам за пределами пакета и не удаляются при удалении приложения. |
Этот механизм полностью отключает виртуализацию HKCU и(или) AppData , которая идет против основной цели. Это не тонко настроенное средство, и оно зачастую выходит за рамки требований заданного приложения.