Запуск 64-битного исполняемого файла из 32-битного приложения Windows - PullRequest
4 голосов
/ 04 июня 2010

Каков «правильный» способ для 32-битного приложения найти папку «Program Files» в 64-битной Windows? Например, я запускаю 32-битное приложение с движком VBScript и хочу запустить 64-битный Excel (используя ShellExec или аналогичный). В 32-битном мире я бы проверил переменную окружения "ProgramFiles", чтобы получить базовую папку. Насколько я понимаю, как 32-разрядное приложение в 64-разрядной Windows эта переменная среды будет указывать на папку 32-разрядных программных файлов, например: C: \ Program Files (x86). Но мой 64-битный Excel будет находиться в C: \ Program Files.

Я хочу избежать жесткого кодирования ссылки на "c: \ program files".

Ответы [ 2 ]

4 голосов
/ 04 июня 2010

Вы можете проверить переменную среды "ProgramW6432". Он должен существовать и указывать на Program Files без x86 при запуске 32-битного приложения в 64-битной Windows.

Документация: MSDN

3 голосов
/ 04 июня 2010

В зависимости от версии windows, вы должны использовать известные папки apis.

http://msdn.microsoft.com/en-us/library/bb776911%28v=VS.85%29.aspx

В частности, вы можете использовать FOLDERID_ProgramFilesX64 в сочетании с SHGetKnownFolderPath.

...