32-разрядный процесс, работающий на 64-разрядной версии, получит обобщенный путь к перенаправленному пути из-за перенаправления файлов. Вызов GetCurrentDirectory
, например, если процесс запущен из \Windows\SysWOW64
, даст результат: Windows\System32
.
Тем не менее, очень возможно определить, работает ли 32-битный процесс на 64-битной хост-машине. Я ищу решение, которое укажет мне правильный / фактический путь. Что-то вроде пути ResolveWOWPathToActual, который даст \Windows\SysWOW64
вместо пути \Windows\System32
.
РЕДАКТИРОВАТЬ:
WCHAR szCurFolder[MAX_PATH];
PVOID dummy;
Wow64DisableWow64FsRedirection(&dummy);
GetCurrentDirectoryW(MAX_PATH, szCurFolder);
printf("Current Dir: %S\n", szCurFolder);
Wow64DisableWow64FsRedirection
. - person Abhineet   schedule 14.05.2014Wow64DisableWow64FsRedirection
успешно? - person Abhineet   schedule 14.05.2014FindFirstFile(".", &fd)
также возвращает system32 вместо syswow64 ... - person Jochen Kalmbach   schedule 14.05.2014GetCurrentDirectory
не взаимодействует с перенаправителем файловой системы. Это просто текстовое свойство процесса. В данном случае текущий каталог действительноSystem32
. Перенаправление срабатывает, когда вы пытаетесь разрешить каталог в объект файловой системы. - person David Heffernan   schedule 14.05.2014GetCurrentDirectory
мало что делает. Я экспериментировал, что командаexplorer .
из 32-разрядного cmd.exe запускала \ Windows \ System32 в проводнике, а не Windows \ SysWOW64. - person Ajay   schedule 14.05.2014GetFullPathName(".")
использует неправильный текущий каталог; ( - person Jochen Kalmbach   schedule 14.05.2014