Копая реестр, я не обнаружил там раздел Wow6432Node.
Это было странно, т.к. у меня Windows 7 x64, а значит этот раздел должен был быть. Запустив Process explorer, я увидел, что процесс regedit.exe был 32-бита, а не 64!
Как это оказалось? Чтобы получить ответ на этот вопрос, мне пришлось перерыть немало страниц в интернете. Точнее изначально у меня был вопрос, почему нет раздела Wow6432Node, и только потом я дошел до того, что редактор реестра запускается как 32-битный экземпляр.
Ранее я писал, как сделать Списки переходов для ярлыка Панели управления. Так вот после того, как я это сделал на своем компьютере, я каждый раз запускал редактор реестра оттуда. Не учел я только одного — эта утилита была 32-битная. Значит она запускала 32-битные версии всех приложений, на которые я сделал ярлыки. И редактор реестра, хоть и запускался из C:\Windows\System32\ (не смотрите на число 32 в названии папки System32 — там хранятся 64-битные файлы), все равно запускался файлом regedt32.exe, который был 32-битный. А это значит, что он не имел доступа к разделу реестра Wow6432Node, он его вообще не видел!
Теперь возникла другая проблема — как из 32-битного приложения вызвать 64-битное?
Пришлось еще немного порыть интернет.
Оказалось, что если на 64-битной Windows приложение, которое является 32-битным, обращается к файлу в папке %windir%\System32 (а там, как я уже писал ранее хранятся 64-битные приложения), то происходит его перенаправление в папку %windir%\SysWOW64
Есть небольшое исключение.
В следующих папках не происходит перенаправление в папку %windir%\SysWOW64:
%windir%\system32\catroot %windir%\system32\catroot2 %windir%\system32\drivers\etc %windir%\system32\logfiles %windir%\system32\spool
Теперь о главном: чтобы не происходило перенаправление, система предоставляет для 32-битных приложений доступ к папке %windir%\Sysnative. Приложения с разрядностью 64 бита эту папку не видят. Теперь, чтобы из cmd.exe (32-бита) запустить редактор реестра regedt32 (64-бита), нужно его вызвать так:
%windir%\Sysnative\regedt32.exe
или если нужно вызвать консоль в отдельном окне, можно сделать это так:
start %windir%\Sysnative\cmd.exe
Теперь 32-битная коммандная строка C:\Windows\SysWOW64\cmd.exe (или любое другое 32-битное приложение) сможет запустить 64-битный редактор реестра %windir%\Sysnative\regedt32.exe
Ссылка на статью File System Redirector.
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024