Перенаправление файловой системы WOW64 имеет смысл только при работе под WOW64. Таким образом, эта функция работает только с 32-разрядным процессом, работающим на 64-битной системе, то есть под WOW64. Функция, если она доступна для 64-битного процесса, но всегда терпит неудачу (возвращает FALSE
). И эта функция недоступна в 32-битной системе.
Таким образом, вы не должны использовать привязку времени загрузки для функции, если вы хотите, чтобы ваша программа выполнялась на 32-битной ОС. И вы должны ожидать, что он потерпит неудачу, если вы вызовете его из 64-битного процесса.
Если вы собираетесь отключить перенаправление файловой системы, то вам необходимо:
- Использование во время выполнения связывания. То есть с звонками до
GetModuleHandle('kernel32')
и GetProcAddress()
.
- Добавить код, чтобы обработать тот факт, что
GetProcAddress()
может вернуться NULL
. В этом сценарии вы просто пропускаете вызовы, которые запрещают перенаправление файловой системы.
- Пропустить вызовы, чтобы отключить перенаправление файловой системы, если ваш процесс 64 бит, потому что они всегда терпят неудачу.
Сейчас очень мало сценариев, в которых отключение перенаправления файловой системы целесообразно. Как правило, по моему опыту, если разработчик достаточно сообразителен, чтобы признать такой сценарий, то они также достаточно сообразительны, чтобы разобраться с тремя пунктами, перечисленными выше. Поэтому мне кажется правдоподобным, что ваш код не должен вообще отключать перенаправление файловой системы. Интересно, есть ли лучшее решение любой проблемы, которая заставила вас отключить перенаправление файловой системы.
Это худшее закрытие, которое я видел пока. * Вопросы об общем вычислительном оборудовании и программном обеспечении не относятся к теме для переполнения стека. * Да, действительно. Но вопросы о том, почему призывы к функциям API Win32 не могут быть решены, очень много по теме. Закрыть избирателей, позор вам! –