|
|
||||||||||||||||||||||||||
Существует ли файл в папке Windows\System32 на 64-разрядной ОС (или обход механизма File System Redirector)12.08.2012, 05:55. Показов 7106. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|