Aracılığıyla paylaş


Esnek sanallaştırma

Genel Bakış

Esnek sanallaştırma özelliği, uygulamanızın bazı dosya kümesinin ve Kayıt Defteri girdilerinin diğer uygulamalar tarafından görünür olması gerektiğini bildirmesi için bir yol sağlar; ve bunların uygulama kaldırmada kalıcı olması gerekir. Diğer tüm dosyalar ve Kayıt Defteri girdileri diğer uygulamalar tarafından görülmeyebilir ; ve kaldırıldığında kaldırılır.

Seçili konumların sanallaştırılmasını denetleme

Uyarı

Bu bölümde açıklanan davranış Windows 10, sürüm 21H1'de kullanıma sunulmuştur.

Windows 10, sürüm 21H1'den başlayarak sistem unvirtualizedResources kısıtlı özelliğinin ve RegistryWriteVirtualization ve FilesystemWriteVirtualization özelliklerinin mevcut davranışını korur. Buna ek olarak, sistem uygulamanızın sanallaştırılmasını istemediğiniz belirli klasörleri ve/veya Registry anahtarlarını bildirme özelliğini ekler.

  • Yalnızca içindeki %USERPROFILE%\AppDatadosya sistemi konumlarını bildirebilirsiniz.
  • Yalnızca HKCU içindeki Kayıt Defteri konumlarını bildirebilirsiniz.

İşte bir örnek.

<!-- 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>

Uyarı

Uygulamanız hem Windows 10 öncesi, sürüm 21H1 hem de Windows 10, sürüm 21H1 söz dizimini bildirirse, eski bildirim Windows 10 öncesi sürüm 21H1 sürümlerinde kullanılırken, yeni bildirim Windows 10 öncesi, sürüm 21H1 ve sonraki sürümlerde kullanılır.

Windows 10, sürüm 21H1 öncesi mekanizmalar

Geleneksel ortamlarda, uygulamalar dosya sistemindeki çoğu yerde dosya oluşturabilir, güncelleştirebilir ve silebilir. Ayrıca Windows Kayıt Defteri'nde girdiler oluşturabilir, güncelleştirebilir ve silebilir. Bu dosyalar ve Kayıt Defteri girdileri, genellikle olması gerekmese de sistemdeki diğer uygulamalar tarafından görülebilir. Buna ek olarak, uygulama kaldırıldığında, bu dosyalar ve Kayıt Defteri girdileri genellikle geride bırakılır ve dağınık hale gelir.

Evrensel Windows Platformu'nda (UWP), bu tür dosyalar ve Kayıt Defteri girişleri sanallaştırılır, böylece yalnızca bunları yazan uygulama görebilir. Uygulama kaldırıldığında kaldırılırlar. Ancak, uygulamanın bu tür dosyaların ve Kayıt Defteri girdilerinin diğer uygulamalar tarafından görünür olmasını istediği geçerli senaryolar vardır. Buna ek olarak, diğer uygulamalar bu dosyaları ve girişleri yazan uygulama kaldırıldıktan sonra bile kalıcı olmasını gerektirebilir.

Varsayılan MSIX davranışı

Yer Bağlam Açıklama
HKCU (İngilizce) Yükleme zamanı
  • Uygulama, user.dat\ girdilerini belirten bir dosya içerebilir. Bu girdiler aslında kullanıcının user.dat klasöründeki bir dosyaya (her uygulamanın alt klasöründe) yazılır ve anahtarlar HKCU'daymış gibi uygulamaya sunulur.
  • Okuma sırasında, bu özel kovan tüm girişlerin aynı yerde görünmesi için sanallaştırılmamış HKCU\Software ile birleştirilir.
  • Uygulama kaldırıldığında, sanallaştırılmış girdiler artık kullanılamaz, çünkü bunlar kayıt defterine hiçbir zaman eklenmemiştir.
  • Sanallaştırılmış kovandaki anahtarlar yalnızca uygulama tarafından görülebilir.
HKCU (İngilizce) Çalışma zamanı
  • Yazma işlemleri uygulama başına ayrı bir kullanıcı başına özel kovana gider.
  • Okuma için bu kovan, tüm girişlerin aynı yerde görünmesi için sanallaştırılmamış HKCU ile birleştirilir.
  • Uygulama kaldırıldığında sanallaştırılmış girişler kaldırılır.
  • Sanallaştırılmış kovandaki anahtarlar yalnızca uygulama tarafından görülebilir.
HKLM (İngilizce) Yükleme zamanı
  • Uygulamaregistry.dat\ girdilerini belirten bir dosya içerebilir. Bu girdiler aslında kullanıcının user.dat klasöründeki bir dosyaya (her uygulamanın alt klasöründe) yazılır ve anahtarlar HKLM'deymiş gibi uygulamaya sunulur.
  • Okuma için bu özel hive veritabanı, tüm girişlerin aynı yerde görünmesi için sanallaştırılmadan HKLM\Software ile birleştirilir.
  • Uygulama kaldırıldığında, sanallaştırılmış girdiler artık kullanılamaz, çünkü bunlar kayıt defterine hiçbir zaman eklenmemiştir.
  • Sanallaştırılmış kovandaki anahtarlar yalnızca uygulama tarafından görülebilir.
HKLM (İngilizce) Çalışma zamanı
  • HKLM altındaki yazma işlemlerine, ilgili anahtar/değer paket kovanında mevcut olmadığı ve kullanıcının doğru erişim izinleri olduğu sürece izin verilir (bu, bunun yalnızca yükseltilmiş olarak çalışan bir Centennial uygulaması tarafından kullanılabildiği anlamına gelir).
İyi bilinen klasörler Yükleme zamanı
  • Uygulama, rastgele dosyalar içeren iyi bilinen adlandırılmış alt klasörlere sahip bir VFS klasörü içerebilir.
  • Okuma için bu alt klasörler, tüm dosyaların aynı yerde görünmesi için, sanallaştırılmamış iyi bilinen konumlarla birleştirilir.
Uygulama Verileri Çalışma zamanı
  • 1809'dan küçük veya buna eşit Windows sürümleri için, kullanıcının AppData klasörüne yapılan tüm yazma işlemleri (oluşturma, silme ve güncelleştirme dahil) yazma sırasında kullanıcı başına, uygulama başına özel bir konuma kopyalanır ve çalışma zamanında gerçek AppData konumunda görünecek şekilde birleştirilir.
  • 1809'dan büyük Windows sürümleri için, kullanıcının AppData klasöründe yeni oluşturulan tüm dosya ve klasörler, gerçek AppData konumunda görünecek şekilde çalışma zamanında birleştirilen kullanıcı başına, uygulama başına özel bir konuma yazılır. Mevcut AppData dosyalarında yapılan değişiklikler, sanallaştırılmamış dosyalarda yapılır. Okumalar için sistem önce özel konumu dener, ardından sanallaştırılmamış AppData'ya geri döner.
  • Geri dönüş durumunda, sanallaştırılmamış dosyalara yazma işlemlerine izin verilir.
  • Uygulama kaldırıldığında sanallaştırılmış girişler kaldırılır.
  • Sanallaştırılmış konumdaki dosyalar yalnızca uygulama tarafından görülebilir.
  • AppData için VFS desteği yoktur.
  • AppData'nın dışında, uygulama kullanıcının yazma erişimine sahip olduğu herhangi bir konuma(%userprofile% yalnızca bir bölümüdür) diğer bölümleri de dahil olmak üzere yazabilir.

Kısıtlanmış unvirtualizedResources özellik

Uyarı

Windows 10, sürüm 1903 (10.0; Derleme 18362), aynı zamanda Windows 10 Mayıs 2019 Güncelleştirmesi olarak da bilinen versiyonunda unvirtualizedResources kısıtlı özellik için destek tanıtıldı.

Uygulamanız kısıtlanmış özelliği bildirebilir unvirtualizedResources ve HKCU ve/veya AppData'ya yazma erişimi almak için true ve/veya FilesystemWriteVirtualization özelliklerini olarak ayarlayabilir. Bu, uygulamanızın daha sonra paketi dışındaki diğer işlemler için görünür olan girdiler yazması gereken durumu etkinleştirmektir. Örneğin oyunlar , kaydetme verilerini AppData'ya yazar ve oyun kaldırıldıktan sonra bile bu verilerin kalıcı olması gerekir.

Mülkiyet Açıklama
RegistryWriteVirtualization=devre dışı HKCU'ya yazma işlemleri sanallaştırılmamış konuma gider, paketin dışındaki diğer işlemlere görünür ve uygulama kaldırmada temizlenmez.
FilesystemWriteVirtualization=devre dışı AppData'ya yazma işlemleri sanallaştırılmamış konuma gider, paketin dışındaki diğer işlemlere görünür ve uygulama kaldırma işlemiyle temizlenmez.

Bu mekanizma, birincil hedefe aykırı olan HKCU ve/veya AppData sanallaştırmasını tamamen kapatır. Ayrıntılı bir araç değildir ve genellikle belirli bir uygulamanın gereksinimlerini aşıyor.