Apertura% SystemRoot% \ system32 \ calc.exe da un processo a 32 bit reindirizza a un altro file. Il che, come e perché?

StackOverflow https://stackoverflow.com/questions/5822113

Domanda

Attualmente sto scrivendo un po 'di codice di prova in C ++ che pasticci intorno con i file PE per comprendere la sua struttura formato di file. Il mio progetto è impostato per la compilazione a 64 bit. Nel mio codice apro% SystemRoot% \ system32 \ calc.exe e leggo le strutture IMAGE_DOS_HEADER e IMAGE_NT_HEADERS. Allo stesso tempo, ho la stessa calc.exe aperto nel Notepad ++ con il plugin editor esadecimale. Ho confrontato i valori mio codice legge con Notepad ++ e ho notato che erano diversi. calc.exe ho copiato da System32 a C: \ Temp \ calc.exe, e ora i valori corrispondono

.

Notepad ++ sembra essere un'applicazione a 32 bit (non hanno controllato il file PE, ma dal momento che è installato per Program Files (x86) per impostazione predefinita, sembra essere un presupposto sicuro da fare).

Questo è l'WinSxS sul posto di lavoro? O cos'altro è la causa? E quale file è in realtà alimentato ad applicazioni a 32 bit di apertura% SystemRoot% \ system32 \ calc.exe?

Solo curioso. Grazie in anticipo per qualsiasi far luce su questo.

È stato utile?

Soluzione

Sì, questo è il redirector WOW. Vedrete che c'è un calc.exe in C: \ Windows \ SysWOW64 pure. Questo è il file che si apre quando si utilizza il SystemRoot% \ System32 \ calc.exe percorso%.

Questo può essere temporaneamente disabilitato per l'accesso alla versione a 64 bit del file con Wow64DisableWow64FsRedirection

Maggiori dettagli sono disponibili all'indirizzo File System Redirector

Altri suggerimenti

Se non ricordo bene, quando un 32bit applicazioni tenta di aprire system32 di directory, è automaticamente reindirizzato a syswow64 dir.

Disattivazione WowFs reindirizzamento non è necessaria e, a volte non è nemmeno un'opzione (per esempio, quando si sta tentando di ottenere Notepad ++ per aprire i file nella directory system32). È possibile utilizzare la directory virtuale% windir% \ Sysnative anziché% windir% \ System32 (non sarà possibile vederlo in esploratore, ma è possibile digitare nella barra degli indirizzi)

WOW64 è implementato in tre DLL: wow64.dll, wow64cpu.dll, e wow64win.dll (e 32-bit NTDLL). Reindirizzamento (tra le altre cose) è implementata in wow64.dll, CPU di emulazione / assistente di routine in wow64cpu.dll, e wow64win.dll contiene thunk a win32k.sys (il driver in modalità kernel responsabile per l'interfaccia grafica di Windows).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top