Startpagina » ramen » Sysnative-map in Windows 64-bit uitgelegd

    Sysnative-map in Windows 64-bit uitgelegd

    Met de release van Windows 7 van 64-bits is er een kleine wijziging aangebracht in de normale toewijzing van mappen in de Windows-map. Twee nieuwe mappen zijn opgenomen in de 64-bits editie van Windows 7, Windows 8 en Windows 10. Dat zijn ze Sysnative en SysWOW64 mappen. Dit is alleen in 64-bits Windows. Als u een 32-bits Windows uitvoert op een 64-bits computer, ziet u ze niet. U zult ze ook niet zien wanneer u 32-bit Windows op een 32-bit machine uitvoert.

    Er is een andere map buiten de Windows-map en deze wordt genoemd Programmabestanden (x86). We zijn gewend aan de naam van de map Program Files die de uitvoerbare bestanden van onze programma's bevat. In 64-bits systemen worden de 64-bits programma's opgeslagen in de map Program Files terwijl de 32-bits programma's zijn ondergebracht in Program Files (x86). Windows gebruikt echter zoiets als een emulatie voor het uitvoeren van 32-bits programma's op een 64-bits computer. En daarom is het nodig om te weten en te begrijpen wat de systeemmappen onder Windows zijn (64 bit), zodat je weet hoe je het bestand kunt bereiken dat je wilt.

    In tegenstelling tot de 32-bits machines, waar de 32-bits DLL's worden opgeslagen in de System32-map, de 64-bits versie van Windows slaat DLL's op die gerelateerd zijn aan 64-bits in de map System32. Dit is om de programmering te vergemakkelijken en om compatibiliteit met oudere versies te bieden. Dat wil zeggen, als een 64-bits programma naar System32 verwijst in zijn code, krijgt het de 64-bits DLL automatisch wanneer hij wordt gebeld. Dit helpt ontwikkelaars omdat ze de code niet hoeven te wijzigen in hun programma's voor Windows 64-bit.

    Kort gezegd, Windows heeft alle 32-bit DLL's uit de System32-map in de Windows-map naar een andere map verplaatst, zodat eerdere programma's niet opnieuw hoeven te worden gecodeerd om de juiste DLL's te krijgen, zelfs wanneer API's worden gebruikt - na een upgrade naar 64-bits. Het probleem treedt op wanneer een 32-bits toepassing toegang probeert te krijgen tot de System32-map. In dit geval zal het programma crashen omdat het niet is geschreven voor het verwerken van 64-bit DLL's.

    SysWOW64-map in Windows 64-bits

    Alle 32-bits DLL's zijn verplaatst naar de nieuwe SysWOW64-map in de 64-bits versie van Windows 7, Windows 8 en Windows 10, dus wanneer de 32-bits programma's een beroep doen op 32-bits DLL's, moeten ze de SysWOW64-map bereiken.

    Mogelijk denkt u dat de ontwikkelaars hun programma's en toepassingen moeten scannen om de DLL-functies naar de map SysWOW64 te verwijzen. Maar Microsoft heeft er al voor gezorgd. Als het een 32-bits programma is dat belt C: \ Windows \ System32, een emulator zal het pad omleiden naar C: \ Windows \ SysWOW64. Dat wil zeggen, om 32-bits programma's in Windows 64-bits uit te voeren, wordt een emulator gebruikt, zodat er juiste achterwaartse compatibiliteit is en om fouten bij het aanroepen van DLL-bestanden te voorkomen.

    Sysnative-map in Windows 64-bit

    In sommige gevallen kan een 32-bits programma of toepassing een 64-bits DLL nodig hebben. In dat geval moet u de omleidingsmap gebruiken Sysnative. U kunt het SysNative beschouwen als een virtuele map en een alias die verwijst naar de map System32. Het bestaat niet fysiek op uw systeem als zodanig. Dus als je 32-bit programma toegang moet hebben tot een 64-bit DLL, gebruik het dan niet C: \ Windows \ System32 omdat de 32-bits programma-emulator het naar de 32-bits DLL-map met de naam SysWOW64 zal brengen. Gebruik in plaats daarvan C: \ Windows \ SysNative als het pad naar het DLL-programma. Als u Sysnative in het pad gebruikt, wordt het omgeleid naar de System32-map in plaats van naar de SysWOW64-map.

    Als u Windows Verkenner opent, vindt u de map Sysnative niet in C: \ Windows. Zelfs als u Mapopties hebt ingesteld om verborgen mappen en systeemmappen weer te geven. Dit komt omdat Windows File Explorer een 64-bits programma is wanneer het wordt uitgevoerd in een 64-bits Windows en de map Sysnative is alleen zichtbaar en toegankelijk vanuit 32-bits programma's.

    Op te sommen:

    1. System32-mappen bevatten 64-bits DLL-bestanden.
    2. SysWOW64 bevat 32-bits DLL-bestanden en de 32-bits programma's worden automatisch doorgestuurd naar deze map
    3. Sysnative is een map voor omleiding waarmee 32-bits programma's 64-bits DLL's kunnen oproepen.

    Extra lezen: MSDN.

    Wilt u het verschil weten tussen de mappen System32 en SysWOW64??