Hemsida » Windows » Sysnative mapp i Windows 64-bitars förklarad

    Sysnative mapp i Windows 64-bitars förklarad

    Med utgåvan av Windows 7 av 64 bitar, introducerades en liten förändring i den normala fördelningen av mappar i Windows-katalogen. Två nya mappar ingår i 64-bitarsupplagan av Windows 7, Windows 8 och Windows 10. De är Sysnative och SysWOW64 mappar. Detta är bara i 64-bitars Windows. Om du kör en 32-bitars Windows på en 64-bitars maskin ser du dem inte. Du kommer inte heller att se dem när du kör 32-bitars Windows på en 32-bitars maskin.

    Det finns en annan mapp utanför Windows-katalogen, och den heter Programfiler (x86). Vi är vana vid namnet på mapp Programfiler som rymmer körprogrammen för våra program. I 64-bitarssystem lagras 64-bitars program i mappen Programfiler medan 32-bitarsprogrammen är inrymda i Programfiler (x86). Men Windows använder något som en emulering för att köra 32-bitarsprogram på en 64-bitars maskin. Och det är därför nödvändigt att veta och förstå vad som är systemmapparna under Windows (64 bitar) så att du vet hur man kommer till den fil du vill ha.

    Till skillnad från 32-bitars maskiner, där 32-bitars DLL-filer lagras i System32-mappen, 64-bitarsversionen av Windows lagrar DLLs relaterade till 64-bitar i System32-mappen. Detta är för att underlätta programmeringsändamålen och att ge bakåtkompatibilitet. Det vill säga, om ett 64-bitars program refererar till System32 i dess kod, kommer det att få 64-bitars DLL automatiskt när det kallas. Detta hjälper utvecklare eftersom de inte behöver ändra koden i sina program för Windows 64-bitars.

    I korthet flyttade Windows alla 32-bitars DLL-filer från System32-mappen i Windows-katalogen till en annan mapp så att tidigare program inte behöver recodas för att få rätt DLL-filer även när de använder API-er - efter uppgradering till 64-bitars. Problemet uppstår när en 32-bitars applikation försöker komma åt mappen System32. I det här fallet kommer programmet att krascha eftersom det inte är skrivet för att hantera 64-bitars DLL-filer.

    SysWOW64-mapp i Windows 64-bitars

    Alla 32-bitars DLL har flyttats till det nya SysWOW64-mappen i 64-bitarsversionen av Windows 7, Windows 8 och Windows 10, så när 32-bitarsprogrammen kräver 32-bitars DLL-filer måste de nå SysWOW64-mappen.

    Du kanske känner att utvecklarna måste skanna sina program och program för att peka på DLL-funktionerna i SysWOW64-mappen. Men Microsoft har redan tagit hand om det. Om det är ett 32-bitars program som ringer C: \ Windows \ System32, en emulator kommer att omdirigera sökvägen till C: \ Windows \ SysWOW64. Det vill säga att köra 32-bitars program i Windows 64-bitars används en emulator så att det finns korrekt bakåtkompatibilitet och för att undvika fel när du ringer DLL-filer.

    Sysnativ mapp i Windows 64-bitars

    Det kan finnas fall där ett 32-bitars program eller program kan behöva en 64-bitars DLL. I så fall måste du använda omdirigeringsmappen Sysnative. Du kan överväga att SysNative är en virtuell mapp och ett alias som pekar på System32-mappen. Det finns inte fysiskt på ditt system som sådant. Så om ditt 32-bitars program behöver komma åt en 64-bitars DLL, använd inte C: \ Windows \ System32 eftersom 32-bitars programemulatorn tar den till 32-bitars DLL-mappen som heter SysWOW64. Använd istället C: \ Windows \ SysNative som sökvägen till DLL-programmet. Använda Sysnative i sökvägen omdirigerar den till System32-mappen i stället för SysWOW64-mappen.

    Om du öppnar File Windows Explorer hittar du inte mappen Sysnative i C: \ Windows. Även om du anger mappalternativ för att visa dolda och systemmappar. Detta beror på att Windows File Explorer är ett 64-bitars program när det körs i en 64-bitars Windows, och Sysnative-mappen är synlig och tillgänglig endast från 32-bitars program.

    För att sammanfatta:

    1. System32-mappar innehåller 64-bitars DLL-filer.
    2. SysWOW64 innehåller 32-bitars DLL-filer, och 32-bitarsprogrammen omdirigeras automatiskt till den här mappen
    3. Sysnative är en omdirigeringsmapp som tillåter 32-bitars program att ringa 64-bitars DLL-filer.

    Ytterligare läs: MSDN.

    Vill du veta skillnaden mellan System32 och SysWOW64-mappar?