SHGetSpecialFolderPath, как получить доступ к 64-битному CSIDL из 32-битного приложения - PullRequest
2 голосов
/ 20 августа 2009

Есть ли способ из 32-битного приложения, работающего в 64-битной системе, получить доступ к папкам по умолчанию для 64-битных приложений?

Например, использование SHGetSpecialFolderPath с CSIDL_PROGRAM_FILES из 32-битного приложения возвращает «C: \ Program Files (x86)» Если бы такой же вызов использовался из 64-битного приложения, я бы получил «C: \ Program Files». способ получить этот "C: \ Program Files" из 32-битного приложения?

Подобный вопрос здесь не помогает SHGetFolderPath () 32 бита против 64 бита , а также не подавляет перенаправление файловой системы wow64 перед вызовом SHGetSpecialFolderPath

Ответы [ 2 ]

2 голосов
/ 20 августа 2009

Отвечая на мой собственный вопрос, кажется, что это невозможно с SHGetSpecialFolderPath. В Vista и более поздних версиях использование функции замены SHGetKnownFolderPath позволяет сделать это с FOLDERID_ProgramFilesX64

1 голос
/ 20 августа 2009

Я полагаю, что единственной причиной наличия отдельных папок было предотвращение смешивания 32- и 64-битных приложений. Следовательно, вам не нужно видеть папку, принадлежащую к разным битам из вашего приложения.

У вас может быть очень веская причина, но я не вижу ни одного в вашем вопросе как отправленный.

...