Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Gambaran Umum
Fitur virtualisasi fleksibel menyediakan cara bagi aplikasi Anda untuk menyatakan bahwa sejumlah file dan entri Registri tersebut harus terlihat oleh aplikasi lain; dan bahwa file dan entri tersebut harus tetap ada saat aplikasi dihapus. Semua file dan entri Registri lainnya tidak terlihat oleh aplikasi lain; dan dihapus saat dicopot pemasangannya.
Cara mengontrol virtualisasi lokasi yang dipilih
Nota
Perilaku yang dijelaskan di bagian ini diperkenalkan di Windows 11.
Mulai dari Windows 11, sistem mempertahankan perilaku saat ini dari kemampuan terbatas UnvirtualizedResources, dan properti RegistryWriteVirtualization dan FilesystemWriteVirtualization. Selain itu, sistem menambahkan kemampuan bagi aplikasi Anda untuk mendeklarasikan folder dan/atau kunci Registri tertentu yang ingin tidak di-virtualisasi.
- Anda hanya dapat mendeklarasikan lokasi sistem file yang berada di dalam
%USERPROFILE%\AppData. - Anda hanya dapat mendeklarasikan lokasi Registri yang berada dalam HKCU.
Berikut adalah contohnya.
<!-- 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 11 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>
Nota
Jika aplikasi Anda menyatakan sintaks pra-Windows 11 dan Windows 11, maka deklarasi lama akan digunakan pada versi pra-Windows 11, sementara deklarasi baru akan digunakan pada pra-Windows 11 dan yang lebih baru.
Mekanisme sebelum Windows 11
Di lingkungan tradisional, aplikasi dapat membuat, memperbarui, dan menghapus file di sebagian besar tempat dalam sistem file. Dan mereka dapat membuat, memperbarui, dan menghapus entri di Windows Registry. File dan entri Registri tersebut terlihat oleh aplikasi lain di sistem, meskipun sering kali tidak perlu. Selain itu, ketika aplikasi dihapus instalasinya, file dan entri Registri tersebut sering ditinggalkan, dan menjadi berantakan.
Di Universal Windows Platform (UWP), file dan entri Registri tersebut divirtualisasi sehingga hanya aplikasi yang menulisnya yang dapat melihatnya. Dan dihapus saat aplikasi di-uninstall. Tetapi ada skenario yang valid di mana aplikasi ingin file dan entri Registri tersebut terlihat oleh aplikasi lain. Selain itu, aplikasi lain mungkin mengharuskan file dan entri tersebut bertahan bahkan setelah aplikasi yang menulisnya dihapus instalasinya.
Perilaku default MSIX
| Lokasi | Konteks | Deskripsi |
|---|---|---|
| HKCU | Waktu penginstalan |
|
| HKCU | Waktu Jalan |
|
| HKLM | Waktu penginstalan |
|
| HKLM | Waktu Jalan |
|
| Folder terkenal | Waktu penginstalan |
|
| Data Aplikasi | Waktu Jalan |
|
Kemampuan unvirtualizedResources terbatas
Nota
Dukungan untuk unvirtualizedResources fitur yang dibatasi diperkenalkan di Windows 10, versi 1903 (10.0; Build 18362), juga dikenal sebagai Pembaruan Windows 10 Mei 2019.
Aplikasi Anda dapat mendeklarasikan unvirtualizedResources kemampuan terbatas, dan mengatur properti RegistryWriteVirtualization dan/atau FilesystemWriteVirtualization ke true, untuk mendapatkan akses tulis ke HKCU dan/atau ke AppData. Ini untuk mengaktifkan kasus di mana aplikasi Anda perlu menulis entri yang kemudian terlihat oleh proses lain di luar paketnya. Misalnya, game menyimpan data ke AppData, dan data tersebut perlu dipertahankan bahkan setelah game dihapus.
| Harta benda | Deskripsi |
|---|---|
| RegistryWriteVirtualization=dinonaktifkan | Penulisan ke HKCU masuk ke lokasi yang tidak divirtualisasi, terlihat oleh proses lain di luar paket, dan tidak dihapus saat aplikasi dihapus. |
| FilesystemWriteVirtualization=dinonaktifkan | Penulisan ke AppData dilakukan di lokasi yang tidak divirtualisasi, dapat terlihat oleh proses lain di luar paket, dan tidak akan dibersihkan saat aplikasi dihapus instalasinya. |
Mekanisme ini mematikan virtualisasi HKCU dan/atau AppData sama sekali, yang bertentangan dengan tujuan utama. Ini bukan alat yang sangat detail, dan sering melampaui persyaratan aplikasi tertentu.