Redirector del Registro di sistema
Il redirector del Registro di sistema isola le applicazioni a 32 bit e a 64 bit fornendo visualizzazioni logiche separate di determinate parti del Registro di sistema in WOW64. Il redirector del Registro di sistema intercetta le chiamate del Registro di sistema a 32 bit e a 64 bit alle rispettive viste del Registro di sistema logiche e le esegue il mapping al percorso del Registro di sistema fisico corrispondente. Il processo di reindirizzamento è trasparente per l'applicazione. Pertanto, un'applicazione a 32 bit può accedere ai dati del Registro di sistema come se fossero in esecuzione in Windows a 32 bit anche se i dati vengono archiviati in un percorso diverso in Windows a 64 bit.
Windows 10 su ARM: Oltre alla visualizzazione logica a 32 bit per le applicazioni x86, Windows 10 in ARM include una visualizzazione logica separata per le applicazioni ARM a 32 bit.
Un subset di chiavi in percorsi del Registro di sistema reindirizzati viene condiviso. Le chiamate del Registro di sistema a 32 bit alle chiavi condivise non vengono reindirizzate. Viene invece eseguito il mapping di una copia fisica della chiave in ogni visualizzazione logica del Registro di sistema. Per un elenco delle chiavi reindirizzate e delle chiavi condivise, vedere chiavi del Registro di sistema interessate da WOW64.
Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Per abilitare l'interoperabilità delle applicazioni tramite COM e altri meccanismi, anche un subset di chiavi del Registro di sistema reindirizzate viene riflessa. Il processo di reflection del Registro di sistema copia le chiavi e i valori del Registro di sistema tra due visualizzazioni del Registro di sistema per mantenerle sincronizzate. La reflection del Registro di sistema è stata rimossa a partire da Windows 7 e Windows Server 2008 R2. Per altre informazioni, vedere reflection del Registro di sistema.
Lo scenario seguente illustra l'uso di queste viste logiche:
- Un'applicazione x86 a 32 bit verifica l'esistenza della chiave del Registro di sistema seguente: HKEY_LOCAL_MACHINE\Software\Hello. Se la chiave non esiste, l'applicazione la crea con un valore predefinito "Hello 32-bit x86 world"; in caso contrario, legge e visualizza il valore.
- La stessa applicazione viene modificata per scrivere "Hello 64-bit world" anziché "Hello 32-bit x86 world" e ricompilata come applicazione a 64 bit x64 o ARM64.
- Windows 10 in ARM: La stessa applicazione viene modificata per scrivere "Hello 32-bit ARM world" e ricompilata come applicazione ARM a 32 bit.
- Quando l'applicazione x86 a 32 bit viene eseguita in Windows a 64 bit, viene visualizzato "Hello 32-bit x86 world". Quando viene eseguita l'applicazione a 64 bit, viene visualizzato "Hello 64-bit world". Windows 10 su ARM: Quando l'applicazione ARM a 32 bit viene eseguita in Windows ARM64 a 64 bit, viene visualizzato "Hello 32-bit ARM world". Tutte le applicazioni chiamano le stesse funzioni del Registro di sistema con lo stesso handle predefinito e lo stesso nome di chiave; la differenza è che ogni applicazione opera sulla visualizzazione logica del Registro di sistema e ogni visualizzazione viene mappata a una posizione fisica separata del Registro di sistema, che mantiene intatte tutte le versioni della stringa.
Le chiavi reindirizzate vengono mappate a posizioni fisiche in Wow6432Node. Ad esempio, HKEY_LOCAL_MACHINE\Software viene reindirizzato a HKEY_LOCAL_MACHINE\Software\Wow6432Node. Tuttavia, la posizione fisica delle chiavi reindirizzate deve essere considerata riservata dal sistema. Le applicazioni non devono accedere direttamente alla posizione fisica di una chiave, perché questa posizione può cambiare. Per altre informazioni, vedere Accesso a una vista del Registro di sistema alternativa.
Windows 10 in ARM: chiavi ARM reindirizzate a 32 bit vengono mappate a posizioni fisiche in WowAA32Node.
Per aiutare le applicazioni a 32 bit che scrivono REG_SZ o REG_EXPAND_SZ dati contenenti %ProgramFiles% o %commonprogramfiles% nel Registro di sistema, WOW64 intercetta queste operazioni di scrittura e le sostituisce con "%ProgramFiles(x86)%" e "%commonprogramfiles(x86)%". Ad esempio, se la directory Programmi si trova nell'unità C, "%ProgramFiles(x86)%" si espande in "C:\Programmi (x86)". La sostituzione viene eseguita solo se vengono soddisfatte le condizioni seguenti:
- La stringa deve iniziare con %ProgramFiles% o %commonprogramfiles%. Se la stringa inizia con uno spazio o qualsiasi carattere diverso da %, non viene sostituita.
- Il caso di %ProgramFiles% o %commonprogramfiles% deve essere esattamente come illustrato perché il confronto tra stringhe fa distinzione tra maiuscole e minuscole. Ad esempio, se la stringa inizia con %CommonProgramFiles% anziché %commonprogramfiles%, non viene sostituita.
- La stringa non può superare MAX_PATH*2+15 caratteri. Se supera questa lunghezza, non viene sostituita.
- Impossibile aprire la chiave con KEY_WOW64_64KEY. Questo flag specifica che le operazioni sulla chiave devono essere eseguite nella visualizzazione del Registro di sistema a 64 bit, quindi non viene sostituita. Per altre informazioni, vedere Accesso a una vista del Registro di sistema alternativa.
Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Il flag KEY_WOW_64_64KEY non influisce sulla sostituzione di una chiave. Questo flag influisce sulla sostituzione a partire da Windows 7 e Windows Server 2008 R2.
Inoltre, le chiavi di REG_SZ o REG_EXPAND_SZ contenenti system32 vengono sostituite con syswow64. La stringa deve iniziare con il percorso che punta o in %windir%\system32. Il confronto tra stringhe non fa distinzione tra maiuscole e minuscole. Le variabili di ambiente vengono espanse prima della corrispondenza del percorso, quindi tutti i percorsi seguenti vengono sostituiti: %windir%\system32, %SystemRoot%\system32 e C:\windows\system32. Questa patch viene applicata solo alle chiavi riflesse prima di Windows 7.
Per altre informazioni, vedere gli argomenti seguenti:
- reflection del Registro di sistema
- chiavi del Registro di sistema interessate dal WOW64
- accesso a una visualizzazione del Registro di sistema alternativa
- esempio di reindirizzamento del Registro di sistema in WOW64
- accesso remoto al Registro di sistema in Windows a 64 bit