|
|
||||||||||||||||||||||||||
Существует ли файл в папке Windows\System32 на 64-разрядной ОС (или обход механизма File System Redirector)12.08.2012, 05:55. Показов 7054. Ответов 11
Метки 64-bit fs_redirector (Все метки)
Проведем эксперимент, если Вы владелец 64-разрядной версии ОС Windows:
1. Откройте стандартный поиск, или проводник (если ver. OS > XP). Пишем в строке поиска MSG.exe Результат: найден в папке windows\system32 2. Запускаем любой 32-битный файловый менеджер (например, Total Commander) Можем просто пролистать файлы в папке System32, а можем указать во встроенном поиске (ALT+F7) MSG.exe Результат: найдено 0 файлов. Вот так сюрприз. ![]() Кроме того, попытавшись сделать тоже самое средствами любимого Visual Basic,
Это моя коллекция 7 способов проверок наличия файла, так что сильно не пугайтесь объемом кода ![]()
мы получим также нулевой результат. На эту удочку я недавно попался при отладке Batch-сценария. Виновником оказался так называемый механизм перенаправления файловых запросов в 64-разрядной версии ОС Windows (File System Redirector), о котором рассказывает Microsoft. То есть на самом деле запросы 32-битных приложений при попытке обратится к системной директории System32 файловая система автоматически переадресовывает в папку SysWOW64. Почему так сделано, можно почитать здесь. Но как же нам обойти систему виртуализации. Вот реализация на VB принципа, указанного в статье MS: Способ 1. Временное отключение механизма перенаправления файловых запросов.
1. Относительная небезопасность: реактивацию перенаправления ФС нужно сделать как можно быстрее, чтобы не прервать работу c 64-битными библиотеками в этом потоке. 2. Еще есть информация о предупреждении UAC при попытке снять режим File System Redirection. Запуск примера на ОС Win 7 x64 Ultimate с максимальным уровнем UAC показал, что защита молчит во время этой манипуляции. 3. Также данная API-функция будет работать только на 64-разрядной версии ОС, поэтому разрядность тоже нужно проверять.
Проверка разрядности ОС. Вот пару вариантов от меня: 1. Проверяем наличие системной папки с использованием переадресации через тот самый алиас "Sysnative".
Стоит добавить, что подобная ситуация также касается ветки реестра HKLM\Software\Wow6432Node Для обхода этого также существует специальный алиас. Не по теме: Хотелось бы знать, можно ли заставить систему думать, что запрос к файловой системе исходит от 64-битного приложения? Комментарии?
3
|
||||||||||||||||||||||||||
| 12.08.2012, 05:55 | |
|
Ответы с готовыми решениями:
11
Ошибка: Повреждён или отсутствует файл windows\system32\config\system но винда не переустанавливается! |
| 12.08.2012, 11:29 | |
|
0
|
|
|
|
|||
| 12.08.2012, 12:28 | |||
![]() Хотелось бы увидеть. ![]() ![]() Не смешите людей такими советами.
0
|
|||
| 12.08.2012, 12:55 | |||
|
Не по теме:
Для тех кто в танке. Нужно написать x64 приложение на любом ЯП имеющем компилятор, создающий x64 приложения и вызывать эту прогу из проги на VB. Читайте тему с начала, а не с конца! Разве не видите что речь идет про 64 разрядную систему?
0
|
|||
|
|
||||||
| 12.08.2012, 15:14 [ТС] | ||||||
|
Pro_grammer, да, конечно не запуститься в х32-системе даже, если вызывать из другого х32-приложения.
Но, программист все же должен учитывать все мелочи. Таким образом либо писать 2 версии программы - под х32 и отдельно под х64. Либо учитывать описанные в топике моменты. locm, я так понимаю, Ваша идея - иметь отдельную x64-DLL библиотеку (только с тем функционалом, который различается при вызове в разных по разнядности системах), и подключать ее только в том случае, когда наша программа определит, что система - х64. А позднее связывание (нечто вроде:
0
|
||||||
|
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 6
|
||
| 19.01.2013, 19:58 | ||
|
0
|
||
|
|
|
| 19.01.2013, 20:06 [ТС] | |
|
Kotya, Эксперимент касается только папки system32, которая указана в переменной среды окружения, а значит поиск и запуск MSG происходит именно из нее.
Почитайте внимательно тему: MSG не является внутренней или внешней командой - именно из пакетного файла Не по теме: Папка winsxs вообще отвечает за хранение предыдущих версий библиотек и исполняемых файлов с целью обеспечения совместимости приложений.
1
|
|
|
|
||||||
| 25.08.2013, 23:57 [ТС] | ||||||
Сообщение было отмечено The trick как решение
Решение
Пример записи значения в 64-битную или 32-битную ветку реестра на выбор
Реализуется с помощью аргумента samDesired функции RegOpenKeyEx. Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _ (ByVal hKey As Long, ByVal lpSubKey As String, _ ByVal ulOptions As Long, _ ByVal samDesired As Long, _ phkResult As Long) As Long Registry Key Security and Access Rights: http://msdn.microsoft.com/en-u... s.85).aspx Кусочек из рабочей программы. Лишнее не удалял. Может пригодится кому. Кликните здесь для просмотра всего текста
0
|
||||||
|
Заблокирован
|
|
| 26.08.2013, 10:05 | |
|
Visual Basic 6 не компилирует под X64 ! ! ! !
0
|
|
|
|
|||
| 26.08.2013, 16:26 [ТС] | |||
|
inv.DS, для этого и придумали возможность временно отключать механизм переадресации файловых запросов.
А для реестровых ключей, как это наглядно показано, задействуется параметр: regAccess = KEY_QUERY_VALUE Or KEY_WRITE Or KEY_WOW64_32KEY
regAccess = KEY_QUERY_VALUE Or KEY_WRITE Or KEY_WOW64_64KEY
0
|
|||
| 26.08.2013, 16:26 | |
|
Помогаю со студенческими работами здесь
12
Не удается загрузить Windows из-за испорченого или отсуствующего файла \WINDOWS\SYSTEM32\CONFIG\SYSTEM
Приложение Microsoft Access не может найти файл 'C:\Windows\system32\system.mdb' этот файл требуется для запуска File.Exists - как определить существует файл или нет? Не найден или неисправен файл <Windows root>\system32\hal.dll Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|