Wednesday, 4 May 2016

System32, SysWOW64 and Sysnative: File System Redirector



It can get a little confusing with different file redirection provided by windows to access 32 and bit libraries in a 64 bit Windows system. This post in intended to just provide a concise summary of when to us which path. More details can be found in links given in reference section.

System32: Contains 64 bit dlls and executables and 64 bit applications can access them by putting system32 in their target path.
So a 64 bit application can call 64 bit powershell by using this path:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

SysWOW64: Contains 32 bit dlls and executables. So 64 bit applications can access these by putting syswow64 in their target path. 32 bit applications will be redirected to this folder if they make a call with system32 in the target path.
So a 64 bit application can access the 32 bit version of powershell by going to this path:
%SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe

Note: if a 32 bit application makes a call to System32 it is automatically redirected to SysWOW64.

Sysnative: is a virtual folder, a special alias used to indicate that the file system should not redirect the access to SysWOW64
So a 32 bit application can call 64 bit version of powershell by using this path:
%SystemRoot%\sysnative\WindowsPowerShell\v1.0\powershell.exe



Source\Target
64 bit
32 bit
64 bit
system32
syswow64
32 bit
sysnative
system32/syswow64


http://www.samlogic.net/articles/sysnative-folder-64-bit-windows.htm
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187%28v=vs.85%29.aspx