Delen via


Registerspiegeling

[De informatie in dit onderwerp is van toepassing op Windows Server 2008, Windows Vista, Windows Server 2003 en Windows XP. Vanaf Windows 7 en Windows Server 2008 R2 maakt WOW64 geen gebruik meer van registerspiegeling en worden voorheen weerspiegelde sleutels gedeeld. Zie voor meer informatie registersleutels beïnvloed door WOW64.]

De registeromleiding isoleert 32-bits en 64-bits toepassingen door afzonderlijke logische weergaven te bieden van bepaalde delen van het register op WOW64. De waarden van sommige registersleutels moeten echter hetzelfde zijn in zowel de 32-bits als de 64-bits weergave.

Het proces van register weerspiegeling registersleutels en waarden kopieert tussen twee registerweergaven om ze gesynchroniseerd te houden. Elke weergave heeft een afzonderlijke fysieke kopie van elke weerspiegelde registersleutel, een voor de 32-bits registerweergave en de andere voor de 64-bits registerweergave.

Een weerspiegelde sleutel wordt gekopieerd wanneer een sleutel wordt gesloten door RegCloseKeyaan te roepen. Houd er rekening mee dat dit tot een mogelijke racevoorwaarde leidt: als meer dan één proces de weerspiegelde sleutel wijzigt, bepaalt de laatste RegCloseKey aanroep de uiteindelijke waarde van de sleutel.

De reflector kopieert COM-activeringsgegevens voor lokale servers tussen de weergaven, maar het kopieert geen in-process gegevens omdat 32/64 in-process gegevens mengen niet is toegestaan op 64-bits Windows.

Weerspiegeling is niet ingeschakeld voor gedeelde registersleutels of voor registersleutels die niet worden omgeleid. Weerspiegeling is bijvoorbeeld niet ingeschakeld voor de HKEY_LOCAL_MACHINE\System-sleutel. Zie Registersleutels beïnvloed door WOW64voor een lijst met registersleutels die worden omgeleid, gedeeld of weerspiegeld.

Registerspiegeling maakt gebruik van een beleid voor 'last writer wins', zoals wordt geïllustreerd in het volgende voorbeeld:

  • Na een schone installatie van 64-bits Windows wordt de 64-bits Wordpad.exe geregistreerd voor het afhandelen van .doc bestanden. De reflector kopieert de .doc registratie van de 64-bits registerweergave naar de 32-bits registerweergave.
  • Een beheerder installeert 32-bits Office, waarmee de 32-bits Winword.exe worden geregistreerd voor het afhandelen van .doc bestanden in de 32-bits registerweergave. De register reflector kopieert deze informatie naar de 64-bits registerweergave, dus zowel 32-bits als 64-bits toepassingen starten de 32-bits versie van Winword.exe voor .doc bestanden.
  • Een beheerder installeert 64-bits Office, waarmee de 64-bits Winword.exe worden geregistreerd voor het afhandelen van .doc bestanden in de 64-bits registerweergave. De register reflector kopieert deze informatie naar het 32-bits register, dus zowel 32-bits als 64-bits toepassingen starten de 64-bits versie van Winword.exe voor .doc bestanden.

Daarom blijven de gegevens van de bestandskoppeling behouden voor de laatst geïnstalleerde toepassing.

Het kan handig zijn voor 32-bits en 64-bits toepassingen om specifieke registersleutelwaarden te delen die normaal gesproken naar afzonderlijke registerweergaven worden geschreven. Een 32-bits OLE-server die aanvragen van zowel 32-bits als 64-bits clients kan verwerken, kan bijvoorbeeld de 32-bits registergegevens beschikbaar maken voor de 64-bits weergave van het systeemregister.

Wanneer een onderdeel gegevens schrijft in het systeemregister, analyseert WOW64 de informatie en maakt een kopie van de gegevens in de alternatieve weergave van het register, indien van toepassing. Normaal gesproken bewaart dit proces twee afzonderlijke fysieke kopieën van dezelfde registersleutels in beide weergaven in het register en wordt registerspiegeling of registerspiegeling genoemd.

De meeste sleutels onder de hoofdmap van de klassen bevinden zich in deze categorie. Updates voor de sleutels worden weergegeven wanneer de update is voltooid en de ingang voor de sleutel wordt gesloten. In specifieke gevallen worden schrijfbewerkingen naar een sleutel niet weerspiegeld als de sleutel enige bitness-afhankelijkheid heeft. De 32-bits InprocServer32-sleutel is bijvoorbeeld niet relevant voor 64-bits toepassingen, dus de InprocServer32-sleutel wordt niet weerspiegeld in de 64-bits registerweergave. 64-bits toepassingen kunnen echter gebruikmaken van de 32-bits LocalServer32-sleutel en de LocalServer32-sleutel wordt weerspiegeld.

Voor HKEY_LOCAL_MACHINE\Software\Classes\CLSID en HKEY_CURRENT_USER\Software\Classes\CLSIDworden alleen CLSID's die geen InprocServer32 of InprocHandler32 opgeven, weerspiegeld. Alleen LocalServer32 CLSID's worden weerspiegeld omdat ze niet meer worden verwerkt en kunnen worden geactiveerd door 32- of 64-bits toepassingen. InProcServer32 CLSID's worden niet weerspiegeld omdat het niet mogelijk is om een 32-bits DLL te laden voor uitvoering in een 64-bits proces, of een 64-bits DLL voor uitvoering in een 32-bits proces.

Voor HKEY_LOCAL_MACHINE\Software\Classes\Appid en HKEY_CURRENT_USER\Software\Classes\Appidworden de DllSurrogate- en DllSurrogateExecutable registerwaarden niet weergegeven als de waarde een lege tekenreeks is.

Als u registerspiegeling wilt uitschakelen en inschakelen voor een bepaalde weerspiegelingssleutel, gebruikt u de functies RegDisableReflectionKey en RegEnableReflectionKey. Deze functies hebben geen invloed op sleutels die niet in de lijst met weerspiegelde sleutels staan eerder in dit onderwerp. Toepassingen moeten alleen weerspiegeling uitschakelen voor de registersleutels die ze maken en niet proberen reflectie uit te schakelen voor de vooraf gedefinieerde sleutels, zoals HKEY_LOCAL_MACHINE of HKEY_CURRENT_USER. Gebruik de functie RegQueryReflectionKey om te bepalen of de sleutels in de weerspiegelingslijst zijn uitgeschakeld.

Weerspiegelde sleutels mogen niet worden gebruikt in transacted registerbewerkingen. Schrijven naar weerspiegelde sleutels tijdens een transactie kan ertoe leiden dat de transactie mislukt. Zie Kernel Transaction Managervoor meer informatie over transacties.

registeromleiding

registerspiegeling in Windows

registersleutels beïnvloed door WOW64-