Windows sysnative windows 7 какая папка

Обновлено: 21.11.2024

Каталог %windir%\System32 зарезервирован для 64-разрядных приложений в 64-разрядной версии Windows. Большинство имен DLL-файлов не были изменены при создании 64-разрядных версий DLL, поэтому 32-разрядные версии DLL хранятся в другом каталоге. WOW64 скрывает эту разницу, используя перенаправитель файловой системы.

В большинстве случаев всякий раз, когда 32-разрядное приложение пытается получить доступ к %windir%\System32, %windir%\lastgood\system32 или %windir%\regedit.exe, доступ перенаправляется на путь, зависящий от архитектуры.

Эти пути приведены только для справки. Для совместимости приложения не должны использовать эти пути напрямую. Вместо этого им следует вызывать API, описанные ниже.

Исходный путь Перенаправленный путь для 32-разрядных процессов x86 Перенаправленный путь для 32-разрядных процессов ARM
%windir%\System32 %windir%\SysWOW64 %windir%\SysArm32
%windir%\lastgood\system32 %windir%\lastgood\SysWOW64 %windir%\lastgood\SysArm32
%windir%\regedit.exe %windir%\SysWOW64\regedit.exe %windir%\ SysArm32\regedit.exe

Если при доступе система отображает запрос UAC, перенаправление не происходит. Вместо этого запускается 64-битная версия запрошенного файла. Чтобы предотвратить эту проблему, либо укажите каталог SysWOW64, чтобы избежать перенаправления и обеспечить доступ к 32-разрядной версии файла, либо запустите 32-разрядное приложение с правами администратора, чтобы запрос UAC не отображался.

**Windows Server 2003 и Windows XP: ** UAC не поддерживается.

Некоторые подкаталоги не подлежат перенаправлению. Доступ к этим подкаталогам не перенаправляется в %windir%\SysWOW64: %windir%\system32\catroot
%windir%\system32\catroot2
%windir%\system32\driverstore
%windir% \system32\drivers\etc
%windir%\system32\logfiles
%windir%\system32\spool

**Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: **%windir%\system32\driverstore перенаправляется.

Чтобы получить имя 32-разрядного системного каталога, 64-разрядные приложения должны использовать функцию GetSystemWow64Directory2 (Windows 10, версия 1511) или функцию GetSystemWow64Directory.

Приложения должны использовать функцию SHGetKnownFolderPath для определения имени каталога %ProgramFiles%.

Windows Server 2003 и Windows XP: приложения должны использовать функцию SHGetSpecialFolderPath для определения имени каталога %ProgramFiles%.

Приложения могут управлять перенаправителем файловой системы WOW64 с помощью функций Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirection и Wow64RevertWow64FsRedirection. Отключение перенаправления файловой системы влияет на все файловые операции, выполняемые вызывающим потоком, поэтому его следует отключать только при необходимости для одного вызова CreateFile и снова включать сразу после возврата функции. Отключение перенаправления файловой системы на более длительный период может помешать 32-разрядным приложениям загружать системные библиотеки DLL, что приведет к сбою приложений.

32-разрядные приложения могут получить доступ к собственному системному каталогу, заменив %windir%\System32 на %windir%\Sysnative. WOW64 распознает Sysnative как специальный псевдоним, используемый для указания того, что файловая система не должна перенаправлять доступ. Этот механизм является гибким и простым в использовании, поэтому рекомендуется использовать его для обхода перенаправления файловой системы. Обратите внимание, что 64-разрядные приложения не могут использовать псевдоним Sysnative, так как это виртуальный каталог, а не реальный.

Windows Server 2003 и Windows XP: псевдоним Sysnative был добавлен, начиная с Windows Vista.

С выпуском 64-разрядной версии Windows 7 в обычное размещение папок в каталоге Windows были внесены небольшие изменения. Две новые папки включены в 64-разрядную версию Windows 10, Windows 8 и Windows 70. Это папки Sysnative и SysWOW64. Это только в 64-битной винде. Если вы запустите 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 при вызове. Это помогает разработчикам, поскольку им не нужно изменять код в своих программах для 64-разрядной версии Windows.

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

Читайте: что такое папка Panther?

Папка SysWOW64 в 64-разрядной версии Windows

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

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

Прочитайте: что такое папка FOUND.000?

Папка Sysnative в 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.

Если вы откроете Проводник Windows, вы не найдете папку 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.

Дата: 28 октября 2019 г. Теги: 64-разрядная версия, Папка

Похожие сообщения

Что такое папка WpSystem? Безопасно ли его удалять?

Как восстановить предыдущие окна папки при входе в систему в Windows 11/10

Папка System32 открывается автоматически при запуске в Windows 11/10

сообщить об этом объявлении

Упаковка приложений
Как предприятия развертывают свое программное обеспечение Windows

Экономьте время и деньги,
автоматизируя развертывание программного обеспечения

Экономьте время и деньги за счет
автоматической настройки программного обеспечения

Позвольте вашему программному обеспечению восстановиться
самостоятельно в случае поломки без посторонней помощи

Установка программного обеспечения одним щелчком мыши на
любую машину в вашей сети в любом месте


Почему пакетные приложения
Упаковка дает результат

  • Простые обновления программного обеспечения
  • Сократить поддержку службы поддержки
  • Поддерживать согласованность программного обеспечения
  • Уменьшение числа сбоев программного обеспечения


Взаимодействие
Мы можем упаковать

  • Фиксированная цена (вне сайта)
  • Время и материал
  • На месте вместе с вашим персоналом
  • BAU или на основе проекта


Развертывание
Развертывание пакетов в

  • Рабочие столы Windows
  • Ноутбуки с Windows
  • Серверы Citrix
  • Удаленные компьютеры

Что такое папка Sysnative?

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

В 64-разрядной версии Windows папка System32 предназначена для 64-разрядных двоичных файлов (файлы DLL и т. д.), а папка SysWOW64 — для 32-разрядных двоичных файлов. Если 32-разрядное приложение включает имя папки «\System32» в путь к папке, система автоматически выполняет перенаправление в папку SysWOW64. Это сделано для предотвращения проблем совместимости, когда приложения компилируются в 64-разрядные исполняемые файлы.

Но если 32-битному приложению действительно нужен доступ к 64-битной папке System32 в 64-битной Windows; это возможно?

Ну, получить доступ к 64-битной папке System32 из 32-битного приложения, просто вставив "\System32" в путь к папке, невозможно. Как упоминалось выше, перенаправление в папку SysWOW64 выполняется системой автоматически, если вы попытаетесь это сделать. Но вместо этого можно использовать другое имя папки: Sysnative.

Sysnative — это виртуальная папка, специальный псевдоним, который можно использовать для доступа к 64-разрядной папке System32 из 32-разрядного приложения или сценария. Если вы, например, укажете путь к этой папке в исходном коде вашего приложения:

C:\Windows\Sysnative

фактически используется следующий путь к папке:

C:\Windows\System32

Использование папки Sysnative поможет вам получить доступ к 64-разрядным инструментам из 32-разрядного кода.

Некоторые инструменты в 64-разрядной версии Windows существуют только в 64-разрядной версии; нет 32-битной версии. Некоторые из этих инструментов находятся в папке 64-разрядной версии System32.

Одним из примеров является средство nbtstat, которое используется для устранения проблем с разрешением имен NetBIOS. Если вы попытаетесь запустить инструмент nbtstat из 32-битного кода (например, из приложения или сценария) и использовать путь, например C:\Windows\System32, вы получите сообщение "Файл не найден". " ошибка. Файл не может быть найден; хотя проводник Windows показывает, что файл программы nbtstat на самом деле находится в папке C:\Windows\System32.

Решение состоит в том, чтобы включить виртуальную папку Sysnative в путь к папке, когда вы хотите запустить инструмент (из вашей 32-разрядной программы/скрипта):

Крис Хоффман

Крис Хоффман
Главный редактор

Крис Хоффман – главный редактор How-To Geek. Он писал о технологиях более десяти лет и два года был обозревателем PCWorld. Крис писал для The New York Times, давал интервью в качестве эксперта по технологиям на телевизионных станциях, таких как NBC 6 в Майами, и освещал свою работу в таких новостных агентствах, как BBC. С 2011 года Крис написал более 2000 статей, которые были прочитаны почти миллиард раз — и это только здесь, в How-To Geek. Подробнее.

В 64-разрядных версиях Windows у вас есть две отдельные папки Program Files. Но это еще не все. У вас также есть два отдельных системных каталога, в которых хранятся DLL-библиотеки и исполняемые файлы: System32 и SysWOW64. Несмотря на названия, System32 заполнен 64-битными файлами, а SysWOW64 — 32-битными файлами. Так что же дает?

Что такое System32?

Каталог System32 содержит системные файлы Windows, как файлы библиотеки .DLL, используемые программами, так и программные утилиты .EXE, являющиеся частью Windows. Хотя большинство файлов, которые вы найдете здесь, являются частью операционной системы Windows, сторонние программы иногда также устанавливают в эту папку свои собственные DLL-файлы.

Приложения, работающие в вашей системе, могут быть установлены в папке Program Files или в другом месте, но они часто загружают общесистемные библиотеки из папки System32.

Разделение 32-битных и 64-битных библиотек

В 64-разрядной версии Windows у вас есть папка C:\Program Files, содержащая 64-разрядные программы и их файлы, и папка C:\Program Files (x86), содержащая 32-разрядные программы и их файлы. Эти файлы удобно разделять, поскольку для 64-разрядных программ требуются 64-разрядные файлы DLL, а для 32-разрядных программ — 32-разрядные файлы DLL.

Если 32-разрядная программа загрузит нужный DLL-файл, найдет 64-разрядную версию и попытается загрузить ее, произойдет сбой. Разделяя 64-разрядное и 32-разрядное программное обеспечение на две разные папки Program Files, Windows гарантирует, что они не будут перепутаны и не вызовут проблем.

Однако не все файлы DLL хранятся в Program Files. Многие общесистемные библиотеки, включенные в Windows, хранятся в C:\System32, и некоторые программы также выгружают сюда файлы своих собственных библиотек. Таким образом, как в Windows есть отдельные папки Program Files для 32-разрядных и 64-разрядных версий, так и папки System32 для 32-разрядных и 64-разрядных версий.

System32 и SysWOW64

На 32-разрядном компьютере все 32-разрядные программы хранят свои файлы в папке C:\Program Files, а общесистемная библиотека находится в папке C:\System32.

На 64-разрядном компьютере 64-разрядные программы хранят свои файлы в папке C:\Program Files, а общесистемная папка C:\Windows\System32 содержит 64-разрядные библиотеки. 32-разрядные программы хранят свои файлы в C:\Program Files (x86), а общесистемная папка — C:\Windows\SysWOW64.

Это определенно противоречит здравому смыслу. Несмотря на «32» в названии, папка System32 содержит 64-битные библиотеки. И, несмотря на число 64 в названии, папка SysWOW64 содержит 32-разрядные библиотеки — по крайней мере, в 64-разрядных версиях Windows.

Как правило, вам это знать не нужно. Операционная система Windows и используемые вами программы автоматически размещают свои файлы в нужном месте и используют правильную папку. Однако, если вам когда-нибудь понадобится вручную установить DLL-файл в нужное место или найти, где он установлен (что случается очень редко), вам нужно знать, что есть что.

WOW64, объяснение

Часть имени «WOW64» здесь относится к программному обеспечению Microsoft «Windows 32-bit on Windows 64-bit», которое является частью операционной системы. Это позволяет Windows запускать 32-разрядные программы в 64-разрядной версии Windows. WoW64 перенаправляет доступ к файлам, чтобы программы работали правильно.

Например, если вы устанавливаете 32-разрядную программу на 64-разрядную версию Windows и она пытается выполнить запись в папку C:\Program Files, WoW64 указывает ей на C:\Program Files (x86). И, если он хочет получить доступ к папке C:\Windows\System32, WoW64 указывает ему на C:\Windows\SysWOW64. Windows делает это с помощью перенаправителя файловой системы.

Все это происходит автоматически и прозрачно в фоновом режиме. Программе даже не нужно знать, что она работает в 64-битной операционной системе, что позволяет запускать старые 32-битные программы без изменений в 64-битных версиях Windows. WOW64 также перенаправляет доступ к реестру, обеспечивая отдельные области реестра для 64-разрядных и 32-разрядных программ.

Так почему же System32 64-разрядная, а SysWOW64 32-разрядная?

Все это возвращает нас к вопросу на миллион долларов: почему папка «System32» 64-разрядная, а SysWOW64 32-разрядная?

Похоже, ответ заключается в том, что многие 32-разрядные приложения были жестко закодированы для использования каталога C:\Windows\System32. Когда разработчики перекомпилировали эти приложения для 64-разрядных версий Windows, они продолжали использовать каталог C:\Windows\System32.

Вместо того, чтобы переименовывать каталог и заставлять разработчиков переходить на новый, ломая при этом многие приложения, Microsoft оставила «System32» в качестве стандартного каталога системной библиотеки. Они создали новый каталог библиотеки для приложений, работающих на уровне WoW64, и назвали его «SysWOW64». Когда вы думаете об этом таким образом, название имеет больше смысла.

Да, немного глупо, что каталог с «32» в названии теперь 64-битный. Возможно, Microsoft должна была предвидеть это, когда они назвали его C:\Windows\System32 в 90-х годах. Но, хотя было бы неплохо использовать более простую схему именования, не стоит ломать кучу программ и создавать дополнительную работу для разработчиков только для того, чтобы добраться туда. Это означает, что в обозримом будущем мы застряли с System32 и SysWOW64.

  • › Что такое каталог System32? (и почему его не следует удалять)
  • › Что такое системный файл Windows?
  • › Почему не было Windows 9?
  • ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)
  • › Почему прозрачные чехлы для телефонов желтеют?
  • › Что означает XD и как вы его используете?
  • › Как установить Google Play Маркет в Windows 11
  • › Как восстановить метки панели задач в Windows 11

Читайте также: