Верьте или нет, мой установщик настолько стар, что у него нет возможности обнаруживать 64-разрядную версию Windows.
Есть ли вызов Windows DLL или (еще лучше) переменная среды, которая предоставит эту информацию для Windows XP и Windows Vista?
Одно из возможных решений
Я вижу, что в Википедии указано, что 64-разрядная версия Windows XP и Windows Vista имеет уникальную переменную среды: %ProgramW6432%
, поэтому я предполагаю, что она будет пустой в 32-разрядной Windows.
Эта переменная указывает на каталог Program Files
, в котором хранится вся установленная программа Windows и другие. По умолчанию в англоязычных системах используется C:\Program Files
. В 64-разрядных версиях Windows (XP, 2003, Vista) есть также %ProgramFiles(x86)%
, который по умолчанию равен C:\Program Files (x86)
и %ProgramW6432%
, который по умолчанию равен C:\Program Files
. Сама %ProgramFiles%
зависит от того, является ли процесс, запрашивающий переменную среды, самой 32-разрядной или 64-разрядной (это вызвано 64-разрядным перенаправлением Windows-on-Windows).