Я использую Windows 7 (x64) и Delphi 2010.WOW64 Беды (ярлыки .lnk)
Я пишу компонент, который будет эмулировать стартовое меню. Тем не менее, я столкнулся следующие проблемы:
- Если я пытаюсь открыть контекстный (файл .lnk) с
ShellExecute
, это будет не в состоянии, когда % ProgramFiles% является частью целевого пути ярлыка (тогда он будет искать папку C: \ Program Files (x86) вместо C: \ Program Files); ShGetFileInfo
не удается извлечь правильный указатель значка в списке системных изображений, если % ProgramFiles% является частью пути к файлу значка (та же проблема, что и выше).
Есть ли какие-либо обходные пути для вышеупомянутых проблем или мне нужно дождаться, когда родной 64-разрядный Delphi станет доступным для этого?
Хорошо, это очень раздражает.В то время как Wow64DisableWow64FsRedirection не решает мою начальную проблему, она решает проблему всякий раз, когда% windir% используется как часть имени пути. Можно было бы ожидать, что это изменит/перенаправит все переменные среды! –
Я не думаю, что это сработает. Все, что делает это, отключает перенаправление, поэтому доступ к c: \ windows \ system32 (как пример) из Wow64-программы не перенаправляется под обложки в c: \ windows \ syswow64. Насколько я знаю, это не делает ничего, чтобы помочь вам с переменными окружения. Вам придется либо самостоятельно скомпилировать как собственные 64-разрядные, либо обрабатывать переменные среды обработки. – Luke
Ок, SetEnvironmentVariable ('ProgramFiles', 'C: \ Program Files') исправляет проблему для ShGetFileInfo, но проблема остается в ShellExecute. –