Sysnative папка в Windows 64-битной объяснил

Windows
С выпуском 64-разрядной версии Windows 7 в обычное распределение папок в каталоге Windows были внесены небольшие изменения. В 64-разрядную версию Windows 7, Windows 8 и Windows 10 включены две новые папки. Это папки Sysnative и SysWOW64 . Это только в 64-битной Windows. Если вы используете 32-битную Windows на 64-битной машине, вы их не увидите. Также

С выпуском 64-разрядной версии Windows 7 в обычное распределение папок в каталоге Windows были внесены небольшие изменения. В 64-разрядную версию Windows 7, Windows 8 и Windows 10 включены две новые папки. Это папки Sysnative и SysWOW64 . Это только в 64-битной Windows. Если вы используете 32-битную Windows на 64-битной машине, вы их не увидите. Также вы не увидите их при запуске 32-битной Windows на 32-битной машине.

За пределами каталога Windows есть еще одна папка, которая называется Program Files (x86) . Мы привыкли к имени папки Program Files, в которой находятся исполняемые файлы наших программ. В 64-разрядных системах 64-разрядные программы хранятся в папке Program Files, а 32-разрядные программы – в Program Files (x86). Однако Windows использует нечто вроде эмуляции для запуска 32-разрядных программ на 64-разрядной машине. И, следовательно, необходимо знать и понимать, какие системные папки в Windows (64-разрядные), чтобы вы знали, как получить нужный файл.

В отличие от 32-разрядных компьютеров, где 32-разрядные библиотеки DLL хранятся в папке System32 , 64-разрядная версия Windows хранит библиотеки DLL, связанные с 64-разрядными файлами, в папке System32. Это облегчает программирование и обеспечивает обратную совместимость. То есть, если 64-битная программа ссылается на System32 в своем коде, она автоматически получит 64-битную DLL при вызове. Это помогает разработчикам, поскольку им не нужно менять код в своих программах для Windows 64-bit.

Короче говоря, Windows переместила все 32-разрядные библиотеки DLL из папки System32 в каталоге Windows в какую-то другую папку, так что предыдущие программы не нужно перекодировать, чтобы получить нужные библиотеки DLL даже при использовании API – после обновления до 64-разрядной. Проблема возникает, когда 32-разрядное приложение пытается получить доступ к папке System32. В этом случае произойдет сбой программы, так как она не написана для обработки 64-битных DLL.

Папка SysWOW64 в 64-битной Windows

Все 32-разрядные библиотеки DLL были перемещены в новую папку SysWOW64 в 64-разрядной версии Windows 7, Windows 8 и Windows 10, поэтому, когда 32-разрядные программы вызывают 32-разрядные библиотеки DLL , они должны добраться до папки SysWOW64.

Вам может показаться, что разработчикам придется сканировать свои программы и приложения, чтобы указать функции DLL в папке SysWOW64. Но Microsoft уже позаботилась об этом. Если это 32-разрядная программа, которая вызывает C: Windows System32 , эмулятор перенаправит путь к C: Windows SysWOW64 . То есть для запуска 32-битных программ в 64-битной Windows используется эмулятор, чтобы обеспечить надлежащую обратную совместимость и избежать ошибок при вызове DLL-файлов.

Sysnative Folder в 64-битной Windows

Могут быть случаи, когда 32-битной программе или приложению может потребоваться 64-битная DLL. В этом случае вам придется использовать папку перенаправления Sysnative . Вы можете считать SysNative виртуальной папкой и псевдонимом, указывающим на папку System32. Он не существует физически в вашей системе как таковой. Поэтому, если вашей 32-разрядной программе требуется доступ к 64-разрядной библиотеке DLL, не используйте C: Windows System32 , поскольку эмулятор 32-разрядной программы перенесет ее в 32-разрядную папку DLL, которая называется SysWOW64. Вместо этого используйте C: Windows SysNative в качестве пути к программе DLL. Использование Sysnative в пути перенаправит его в папку System32 вместо папки SysWOW64.

Если вы откроете File Windows Explorer, вы не найдете папку Sysnative в C: Windows. Даже если вы установили параметры папки, чтобы показать скрытые и системные папки. Это связано с тем, что Windows File Explorer является 64-битной программой при работе в 64-битной Windows, а папка Sysnative видима и доступна только для 32-битных программ.

Подводя итог:

  1. Папки System32 содержат 64-битные файлы DLL.
  2. SysWOW64 содержит 32-разрядные файлы DLL, а 32-разрядные программы автоматически перенаправляются в эту папку
  3. Sysnative – это папка перенаправления, которая позволяет 32-разрядным программам вызывать 64-разрядные библиотеки DLL.

Дополнительное чтение: MSDN.

Хотите узнать разницу между папками System32 и SysWOW64?

Оцените статью
Добавить комментарий