Как получить путь к папке Программных файлов (не Программные файлы (x86)) от процесса WOW на 32 бита?

Явно бросаю его как double

double g = 1.0/3.0

Это происходит потому, что Java использует операцию целочисленного деления для 1 и 3, так как вы ввели их как целые константы.

15
задан s d 15 January 2009 в 01:02
поделиться

4 ответа

Я ценю всю справку и, особенно, предупреждения в этом потоке. Однако мне действительно нужен этот путь, и это - то, как я получил его в конце:

(проверка ошибок, удаленная для ясности, используйте на Ваш собственный риск, и т.д.)

WCHAR szNativeProgramFilesFolder[MAX_PATH];
ExpandEnvironmentStrings(L"%ProgramW6432%", 
                       szNativeProgramFilesFolder, 
                       ARRAYSIZE(szNativeProgramFilesFolder);
21
ответ дан 1 December 2019 в 01:17
поделиться

Позвольте мне кавычка Raymond Chen превосходное сообщение в блоге по проблеме:

В 64-разрядном Windows, 32-разрядных программах, запущенных в слое эмуляции. Этот слой эмуляции моделирует x86 архитектуру, виртуализируя ЦП, файловую систему, реестр, переменные среды, функции информации о системе, все это. Если 32-разрядная программа попытается посмотреть на систему, то она будет видеть 32-разрядную систему. Например, если программа вызовет функцию GetSystemInfo для наблюдения то, что выполняет процессор, то будет сказано, что это работает на 32-разрядном процессоре, с 32-разрядным адресным пространством, в мире с 32-разрядным небом и 32-разрядными птицами в 32-разрядных деревьях.

И в этом суть эмуляции: угождать 32-разрядной программе путем моделирования 32-разрядной среды выполнения.

...

вопрос, "Что способ найти каталог x64 Program Files из 32-разрядного приложения?"

ответ", лучше работать с системой, чем против него. ", Если Вы - 32-разрядная программа, затем Вы собираетесь быть борьбой против эмулятора каждый раз, когда Вы пытаетесь взаимодействовать с внешним миром. Вместо этого просто перекомпилируйте свой установщик как 64-разрядную программу. Имейте 32-разрядный установщик, обнаруживают, что он работает на 64-разрядной системе, и запустите 64-разрядный установщик вместо этого. 64-разрядный установщик не будет работать в 32-разрядном слое эмуляции, поэтому когда он попытается скопировать файл или обновить ключ реестра, он будет видеть реальную 64-разрядную файловую систему и реальный 64-разрядный реестр.

, Если Вы все еще хотите сделать это, я рекомендую читать комментарии к этому сообщению в блоге, поскольку они содержат некоторые хорошие подсказки.

12
ответ дан 1 December 2019 в 01:17
поделиться

Вы находитесь на правильном пути - Использование KNOWNFOLDERID FOLDERID_ProgramFilesX64

, функция SHGetKnownFolderPath может использоваться для получения полного пути данного KnownFolder.

4
ответ дан 1 December 2019 в 01:17
поделиться

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

Microsoft создала слой эмуляции WOW для создания жизни легче. Не тратьте впустую все их время и усилие путем борьбы с ним :-).

, Возможно, если Вы сказали нам , почему Вам нужен каталог Program Files не-WOW, мы могли помочь далее.

1
ответ дан 1 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: