Aracılığıyla paylaş


Kayıt Defteri Yansıması

[Bu konudaki bilgiler Windows Server 2008, Windows Vista, Windows Server 2003 ve Windows XP için geçerlidir. Windows 7 ve Windows Server 2008 R2'den başlayarak, WOW64 artık kayıt defteri yansımasını kullanmaz ve daha önce yansıtılan anahtarlar paylaşılır. Daha fazla bilgi için bkz. WOW64 EtkilenenKayıt Defteri Anahtarları .]

kayıt defteri yeniden yönlendiricisi, WOW64'te kayıt defterinin belirli bölümlerinin ayrı mantıksal görünümlerini sağlayarak 32 bit ve 64 bit uygulamaları yalıtıyor. Ancak, bazı kayıt defteri anahtarlarının değerleri hem 32 bit hem de 64 bit görünümlerde aynı olmalıdır.

kayıt defteri yansımasını işlemi, kayıt defteri anahtarlarını ve değerlerini eşitlenmiş tutmak için iki kayıt defteri görünümü arasında kopyalar. Her görünüm, biri 32 bit kayıt defteri görünümü, diğeri de 64 bit kayıt defteri görünümü için olmak üzere yansıtılan her kayıt defteri anahtarının ayrı bir fiziksel kopyasına sahiptir.

Yansıtılan anahtar, RegCloseKeyçağrılarak bir anahtar kapatıldığında kopyalanır. Bunun olası bir yarış durumuna neden olduğunu unutmayın: Yansıtılan anahtarı birden fazla işlem değiştirirse, anahtarın son değerini RegCloseKey son belirler.

Yansıtıcı, Görünümler arasında Yerel sunucular için COM etkinleştirme verilerini kopyalar, ancak 64 bit Windows'ta 32/64 işlem içi veri karıştırmaya izin verilmediğinden işlem içi verileri kopyalamaz.

Yansıma, paylaşılan kayıt defteri anahtarları veya yeniden yönlendirilmeyen kayıt defteri anahtarları için etkinleştirilmedi. Örneğin, yansıma HKEY_LOCAL_MACHINE\System anahtarı için etkinleştirilmemiş. Yeniden yönlendirilen, paylaşılan veya yansıtılan kayıt defteri anahtarlarının listesi için bkz. wow64 tarafından etkilenen kayıt defteri anahtarlarını .

Kayıt defteri yansıması, aşağıdaki örnekte gösterildiği gibi "son yazan kazanır" ilkesini kullanır:

  • 64 bit Windows temiz bir yüklemeden sonra, 64 bit Wordpad.exe .doc dosyaları işlemek üzere kaydedilir. Yansıtıcı, .doc kaydını 64 bit kayıt defteri görünümünden 32 bit kayıt defteri görünümüne kopyalar.
  • Yönetici, 32 bit kayıt defteri görünümündeki .doc dosyaları işlemek için 32 bit Winword.exe kaydeden 32 bit Office'i yükler. Kayıt defteri yansıtıcısı bu bilgileri 64 bit kayıt defteri görünümüne kopyalar, bu nedenle hem 32 bit hem de 64 bit uygulamalar .doc dosyaları için Winword.exe 32 bit sürümünü başlatır.
  • Yönetici, 64 bit kayıt defteri görünümündeki .doc dosyaları işlemek için 64 bit Winword.exe kaydeden 64 bit Office'i yükler. Kayıt defteri yansıtıcısı bu bilgileri 32 bit kayıt defterine kopyalar, böylece hem 32 bit hem de 64 bit uygulamalar .doc dosyalar için Winword.exe 64 bit sürümünü başlatır.

Bu nedenle, dosya ilişkilendirme bilgileri en son yüklenen uygulama için korunur.

32 bit ve 64 bit uygulamalar için normalde ayrı kayıt defteri görünümlerine yazılan belirli kayıt defteri anahtar değerlerini paylaşmak yararlı olabilir. Örneğin, hem 32 bit hem de 64 bit istemcilerden gelen istekleri sunabilen bir 32 bit OLE sunucusu, 32 bit kayıt defteri verilerini sistem kayıt defterinin 64 bit görünümünde kullanılabilir hale getirebilir.

Bir bileşen sistem kayıt defterine veri yazdığında, WOW64 bilgileri analiz eder ve uygun olduğunda kayıt defterinin alternatif görünümünde verilerin bir kopyasını oluşturur. Bu işlem genellikle kayıt defterindeki her iki görünümde de aynı kayıt defteri anahtarlarının iki ayrı fiziksel kopyasını tutar ve kayıt defteri yansıması veya kayıt defteri yansıtma olarak adlandırılır.

Sınıfların kökü altındaki anahtarların çoğu bu kategoridedir. Güncelleştirme tamamlandığında ve anahtarın tutamacı kapandığında anahtar güncelleştirmeleri yansıtılır. Belirli durumlarda, anahtara yazma işlemleri, anahtarın bitlik bağımlılığı varsa yansıtılmaz. Örneğin, 32 bit InprocServer32 anahtarı 64 bit uygulamalar için uygun olmadığından InprocServer32 anahtarı 64 bit kayıt defteri görünümüne yansıtılmaz. Ancak, 64 bit uygulamalar 32 bit LocalServer32 anahtarını kullanabilir ve LocalServer32 anahtarı yansıtılır.

HKEY_LOCAL_MACHINE\Software\Classes\CLSID ve HKEY_CURRENT_USER\Software\Classes\CLSIDiçin yalnızca InprocServer32 veya InprocHandler32 belirtmeyen CLSID'ler yansıtılır. yalnızca LocalServer32 CLSID'leri, işlem dışı oldukları ve 32 veya 64 bit uygulamalar tarafından etkinleştirilebildiği için yansıtılır. InProcServer32 CLSID'leri yansıtılmaz çünkü 64 bit bir işlemde yürütme için 32 bit DLL'yi veya 32 bit bir işlemde yürütülmek üzere 64 bit DLL'yi yüklemek mümkün değildir.

HKEY_LOCAL_MACHINE\Software\Classes\Appid ve HKEY_CURRENT_USER\Software\Classes\Appidiçin, DllSurrogate ve DllSurrogateExecutable kayıt defteri değerleri, değerleri boş bir dizeyse yansıtılmaz.

Belirli bir yansıtılan anahtar için kayıt defteri yansımasını devre dışı bırakmak ve etkinleştirmek için RegDisableReflectionKey kullanın ve RegEnableReflectionKeyişlevlerini. Bu işlevler, bu konunun önceki bölümlerinde yansıtılan anahtarlar listesinde bulunmayan anahtarları etkilemez. Uygulamalar yansımayı yalnızca oluşturdukları kayıt defteri anahtarları için devre dışı bırakmalı ve HKEY_LOCAL_MACHINE veya HKEY_CURRENT_USERgibi önceden tanımlanmış anahtarlar için yansımayı devre dışı bırakmaya çalışmamalıdır. Yansıma listesindeki anahtarların devre dışı bırakılıp bırakılmadığını belirlemek için RegQueryReflectionKey işlevini kullanın.

Yansıtılan anahtarlar, işlenen kayıt defteri işlemlerinde kullanılmamalıdır. Bir işlem sırasında yansıtılan anahtarlara yazmak işlemin başarısız olmasına neden olabilir. İşlemler hakkında daha fazla bilgi için bkz. Kernel Transaction Manager.

Kayıt Defteri Yeniden Yönlendiricisi

Windows 'da Kayıt Defteri Yansıması

WOW64 Etkilenen Kayıt Defteri Anahtarlarını