Aracılığıyla paylaş


Kayıt Defteri Sanallaştırma

Kayıt Defteri sanallaştırma, genel etkisi olan kayıt defteri yazma işlemlerinin kullanıcı başına konumlara yeniden yönlendirilmesini sağlayan bir uygulama uyumluluk teknolojisidir. Bu yeniden yönlendirme, kayıt defterinden okuyan veya kayıt defterine yazan uygulamalar için saydamdır. Windows Vista'dan başlayarak desteklenir.

Bu sanallaştırma biçimi bir ara uygulama uyumluluk teknolojisidir; Daha fazla uygulama Windows Vista ve Windows'un sonraki sürümleriyle uyumlu hale getirildiğinden, Microsoft bunu Windows işletim sisteminin gelecekteki sürümlerinden kaldırmayı planlıyor. Bu nedenle, uygulamanızın sistemdeki kayıt defteri sanallaştırma davranışına bağımlı olmaması önemlidir.

Sanallaştırma yalnızca mevcut uygulamalar için uyumluluk sağlamaya yöneliktir. Windows Vista ve Windows'un sonraki sürümleri için tasarlanan uygulamalar, hassas sistem alanlarına yazmamalı ve sorunları çözmek için sanallaştırmaya güvenmemelidir. Mevcut kodu Windows Vista ve Windows'un sonraki sürümlerinde çalışacak şekilde güncelleştirirken, geliştiriciler uygulamaların verileri yalnızca kullanıcı başına konumlarda veya %alluserprofile% içindeki bir erişim denetimi listesini (ACL) düzgün kullanan bilgisayar konumlarında depolamasını sağlamalıdır.

UAC uyumlu uygulamalar oluşturma hakkında daha fazla bilgi için bkz. UAC Geliştirici Kılavuzu.

Sanallaştırmaya Genel Bakış

Windows Vista'nın öncesinde, uygulamalar genellikle yöneticiler tarafından çalıştırılırdı. Sonuç olarak, uygulamalar sistem dosyalarına ve kayıt defteri anahtarlara serbestçe erişebilir. Bu uygulamalar standart bir kullanıcı tarafından çalıştırıldıysa, erişim hakları yetersiz olduğundan başarısız olur. Windows Vista ve Windows'un sonraki sürümleri, bu işlemleri otomatik olarak yeniden yönlendirerek bu uygulamalar için uygulama uyumluluğunu geliştirir. Örneğin, genel depoya (HKEY_LOCAL_MACHINE\Software) yönelik kayıt defteri işlemleri, kullanıcının profilinde sanal deposu (HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software) olarak bilinen kullanıcı başına bir konuma yönlendirilir.

Kayıt defteri sanallaştırması aşağıdaki türlerde geniş bir şekilde sınıflandırılabilir:

Open Registry Virtualization'

Çağıranın bir anahtara yazma erişimi yoksa ve anahtarı açmaya çalışırsa, anahtar söz konusu arayan için izin verilen en yüksek erişimle açılır.

Anahtar için REG_KEY_DONT_SILENT_FAIL bayrağı ayarlanırsa işlem başarısız olur ve anahtar açılmaz. Daha fazla bilgi için bu konunun devamında yer alan "Kayıt Defteri Sanallaştırmasını Denetleme" bölümüne bakın.

Yazma Kayıt Defteri Sanallaştırma

Çağıranın bir anahtara yazma erişimi yoksa ve anahtara bir değer yazmaya veya alt anahtar oluşturmaya çalışırsa, değer sanal depoya yazılır.

Örneğin, sınırlı bir kullanıcı şu anahtara bir değer yazmayı denerse: appkey1HKEY_LOCAL_MACHINE\Software\sanallaştırma, yazma işlemini HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software\AppKey1öğesine yönlendirir.

Okuma Kayıt Defteri Sanallaştırması

Çağıran sanallaştırılmış bir anahtardan okursa, kayıt defteri hem sanallaştırılmış değerlerin (sanal depodan) hem de sanal olmayan değerlerin (genel depodan) çağıranın birleştirilmiş bir görünümünü sunar.

Örneğin, HKEY_LOCAL_MACHINE\Software\AppKey1 iki değer V1 ve V2 içerdiğini ve sınırlı bir kullanıcının anahtara bir değer V3 yazdığını varsayalım. Kullanıcı bu anahtardan değerleri okumayı denediğinde, birleştirilmiş görünüm genel depodan V1 ve V2 değerlerini ve sanal depodaki V3 değerini içerir.

Sanal değerlerin mevcut olduğunda genel değerlerden öncelikli olduğunu unutmayın. Yukarıdaki örnekte, genel deponun bu anahtar altında V3 değeri olsa bile V3 değeri sanal mağazadan çağırana döndürülür. V3 sanal mağazadan silinecekse V3 genel mağazadan döndürülür. Başka bir deyişle V3 HKEY_USERS\<Kullanıcı SID>_Classes\VirtualStore\Machine\Software\AppKey1'dan silinecekse ancak AppKey1HKEY_LOCAL_MACHINE\Software\ V3 değeri varsa, bu değer genel depodan döndürülür.

Kayıt Defteri Sanallaştırma Kapsamı

Kayıt defteri sanallaştırma yalnızca aşağıdakiler için etkinleştirilir:

  • 32 bit etkileşimli işlemler.
  • HKEY_LOCAL_MACHINE\Softwareanahtarlar.
  • Bir yöneticinin yazabileceği anahtarlar. (Yönetici bir anahtara yazamıyorsa, uygulama bir yönetici tarafından çalıştırılıyor olsa bile windows'un önceki sürümlerinde başarısız olurdu.)

Kayıt defteri sanallaştırma aşağıdakiler için devre dışı bırakıldı:

  • 64 bit işlemler.

  • Hizmetler gibi etkileşimli olmayan işlemler.

    Kayıt defterinin bir hizmet (veya sanallaştırma etkinleştirilmemiş başka bir işlem) arasında işlemler arası iletişim (IPC) mekanizması olarak kullanılması ve anahtar sanallaştırıldıysa uygulamanın düzgün çalışmayacağını unutmayın. Örneğin, bir virüsten koruma hizmeti imza dosyalarını bir uygulama tarafından ayarlanan bir değere göre güncelleştirirse, hizmet genel depodan okuduğundan ancak uygulama sanal depoya yazdığından, imza dosyalarını hiçbir zaman güncelleştirmez.

  • Kullanıcının kimliğine bürünen işlemler. Bir işlem kullanıcının kimliğine bürünülmeye çalışılırsa, bu işlem sanallaştırılmaz.

  • Sürücüler gibi çekirdek modu işlemleri.

  • bildirimlerinde belirtilen requestedExecutionLevel olan işlemler.

  • HKEY_LOCAL_MACHINE\Software\Classes, HKEY_LOCAL_MACHINE\Software\Microsoft\Windowsve HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NTanahtarları ve alt anahtarları.

Kayıt Defteri Sanallaştırmasını Denetleme

Bildirimde requestedExecutionLevel kullanarak bir uygulama düzeyinde sanallaştırmayı denetlemeye ek olarak, yönetici HKEY_LOCAL_MACHINE\Softwareanahtarlar için anahtar temelinde sanallaştırmayı etkinleştirebilir veya devre dışı bırakabilir. Bunu yapmak için, aşağıdaki tabloda listelenen bayraklarla Reg.exe komut satırı yardımcı programı FLAGS seçeneğini kullanın.

Bayrak Anlam
REG_KEY_DONT_SILENT_FAIL Bu bayrak, açık kayıt defteri sanallaştırmayı devre dışı bırakır. Bu bayrak ayarlanırsa ve sanallaştırma etkinleştirilmiş bir anahtarda açma işlemi başarısız olursa, kayıt defteri anahtarı yeniden açmayı denemez. Bu bayrak temizse, kayıt defteri anahtarı istenen erişim yerine MAXIMUM_ALLOWED erişimle yeniden açmayı dener.
REG_KEY_DONT_VIRTUALIZE Bu bayrak yazma kayıt defteri sanallaştırmayı devre dışı bırakır. Bu bayrak ayarlanırsa ve çağıranın üst anahtara yeterli erişim hakkı olmadığından bir anahtar oluşturma veya değer ayarlama işlemi başarısız olursa, kayıt defteri işlemi başarısız olur. Bu bayrak temizse, kayıt defteri anahtarı veya değeri sanal depoya yazmaya çalışır. Çağıranın doğrudan üst anahtarda KEY_READ olması gerekir.
REG_KEY_RECURSE_FLAG Bu bayrak ayarlanırsa, kayıt defteri sanallaştırma bayrakları üst anahtardan yayılır. Bu bayrak açıksa, kayıt defteri sanallaştırma bayrakları yayılmaz. Bu bayrağın değiştirilmesi yalnızca bayrak değiştirildikten sonra oluşturulan yeni alt anahtarları etkiler. Mevcut alt anahtarlar için bu bayrakları ayarlamaz veya temizlemez.

 

Aşağıdaki örnekte, bir anahtar için sanallaştırma bayraklarının durumunu sorgulamak için FLAGS seçeneğiyle Reg.exe komut satırı yardımcı programının kullanımı gösterilmektedir.

C:\>reg flags HKLM\Software\AppKey1 QUERY

HKEY_LOCAL_MACHINE\Software\AppKey1

        REG_KEY_DONT_VIRTUALIZE: CLEAR
        REG_KEY_DONT_SILENT_FAIL: CLEAR
        REG_KEY_RECURSE_FLAG: CLEAR

The operation completed successfully.

Sanallaştırılan bir anahtar üzerinde denetim etkinleştirildiğinde, anahtarın sanallaştırıldığını (normal denetim olaylarına ek olarak) belirten yeni bir sanallaştırma denetim olayı oluşturulur. Yöneticiler, sistemlerinde sanallaştırmanın durumunu izlemek için bu bilgileri kullanabilir.

Kullanıcı Hesabı Denetimi ile Çalışmaya Başlama

Kullanıcı Hesabı Denetimi Anlama ve Yapılandırma

En Az Ayrıcalıklı Bir Ortamdaki Uygulamalar için En İyi Geliştirici Yöntemleri ve Yönergeleri