Сейчас на форуме: jinoweb (+6 невидимых)

 eXeL@B —› Программирование —› Как открыть файл в system32? win7x64
Посл.ответ Сообщение


Ранг: 69.9 (постоянный), 82thx
Активность: 0.140.73
Статус: Участник

Создано: 09 апреля 2019 08:36
· Личное сообщение · #1

Столкнулся со странной ошибкой. Есть код, который проверяет наличие определенного файла в папке системы, и считывает его атрибуты (когда был создан). Код простейший, вида:

Code:
  1. {
  2. WIN32_FILE_ATTRIBUTE_DATA lpF;
  3. if (GetFileAttributesExW(L"C:\Windows\System32\vbscript.dll", GetFileExInfoStandard, &lpF))
  4.          {
  5.          что-то делаем
  6.          }


Парадокс в том, что он не может получить доступ к файлу на 64 битной семерке, хотя на 64битной десятке все работает. А на семерке упорно пишет FILE_NOT_FOUND. Другие файлы находит (в плане, по другим путям, вида C:\symbols), проблема лишь с этими. Wow64DisableFsRedirect.. не помогает. Что это может быть и как такое обойти? Цель - просто считать файловый атрибут (время), не удалять что-то ес-но и не патчить.

p.s. в оригинале путь получается через GetSystemDir и прочее, я сократил код, оставив суть проблемы.

Добавлено спустя 3 минуты
p.p.s. форум убрал двойные слеши или потерялись при копипасте, но в коде они есть, дело не в них, если что.




Ранг: 271.4 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 09 апреля 2019 08:46
· Личное сообщение · #2

Cкорей всего потому что файл на самом деле лежит в SysWOW64.

-----
2 оттенка серого


| Сообщение посчитали полезным: BlackCode


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 09 апреля 2019 09:30 · Поправил: plutos
· Личное сообщение · #3

как вариант: использовать FindFirstFileA или FindFirstFileExA чтобы наверное знать где искомый файл?

-----
Give me a HANDLE and I will move the Earth.





Ранг: 69.9 (постоянный), 82thx
Активность: 0.140.73
Статус: Участник

Создано: 09 апреля 2019 10:25
· Личное сообщение · #4

f13nd
странно то, что часть файлов дублируются (system32->syswow64), а часть (некоторые дрова, к примеру) все же нет.
А более странно, что на десятке все работает, а на семерке нет.

plutos
Попробовал, но не нашло искомый файл. Хотя проводник показывает. Удивился, сбилдил 64 битное приложение - и все есть. Значит, дело таки в разрядности (?), хотя странно, что на десятке все работает иначе. Буду копать дальше.



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 09 апреля 2019 10:39 · Поправил: cppasm
· Личное сообщение · #5

https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365743(v=vs.85).aspx



Ранг: 44.8 (посетитель), 19thx
Активность: 0.040
Статус: Участник

Создано: 09 апреля 2019 10:44
· Личное сообщение · #6

morgot пишет:
странно то, что часть файлов дублируются (system32->syswow64), а часть (некоторые дрова, к примеру) все же нет.
А более странно, что на десятке все работает, а на семерке нет.

У вас ос то х64, стало быть х86 драйвера там не запустятся

А в целом UAC виртуализирует все енто дело, дровер на l называется который это делоет
Luac.sys хз не помню. Обычный дровер фильтр. А реестр не помню хто виртуализирует. Новерное ядро



Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

Создано: 09 апреля 2019 12:42 · Поправил: Alchemistry
· Личное сообщение · #7

morgot пишет:
Wow64DisableFsRedirect.. не помогает.

Как ты ее вызвал.
На 10 эта длл есть в двух вариантах.

В твоей 7 венде тоже должно быть в двух вариантах. Удаляй ка аверопарашу.

| Сообщение посчитали полезным: BlackCode


Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 09 апреля 2019 13:53 · Поправил: BlackCode
· Личное сообщение · #8

Alchemistry пишет:
Удаляй ка аверопарашу.

Стопудово у некоторых одновременно 2 антивируса стоит.
Хук на хуке и хуком погоняет
Я юзал Wow64DisableFsRedirect и не раз, под 7 и 10 работает одинаково.




Ранг: 69.9 (постоянный), 82thx
Активность: 0.140.73
Статус: Участник

Создано: 09 апреля 2019 20:59
· Личное сообщение · #9

Спасибо всем за помощь. Проблему решила Wow64DisableFsRedirect.. , первый раз я ее, видимо, просто неправильно вызывал (передал LPVOID вместо PVOID, а может еще что, не помню). Теперь скопипастил вызов с мсдн, и заработало.
Правда, странно, что на десятке работает без этого, но это уже не так важно.




Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 09 апреля 2019 21:12
· Личное сообщение · #10

morgot пишет:
скопипастил

Совет: поменьше копипасти..




Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 09 апреля 2019 21:26
· Личное сообщение · #11

morgot

> Проблему решила Wow64DisableFsRedirect..

Я уже давно ничему не удивляюсь..

-----
vx





Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 09 апреля 2019 22:20
· Личное сообщение · #12

difexacaw пишет:
Я уже давно..

Братиш, ну не твоё..(Wow64DisableFsRedirect function == фу́нкция {женский род})
Переведу на твой(эльфийский) - ты не знаешь ни хрена..



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 09 апреля 2019 22:42
· Личное сообщение · #13

morgot пишет:
передал LPVOID вместо PVOID





 eXeL@B —› Программирование —› Как открыть файл в system32? win7x64
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати