Верьте или нет, мой установщик настолько стар, что у него нет возможности определять 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).