any ReadReg(int RootKey, str SubKey, str? Name, any? Default)
Выполняет чтение значения из указанного ключа реестра Windows (32-бит или 64-бит). Первый параметр должен быть именем раздела реестра, например, HKEY_LOCAL_MACHINE, HKEY_LOCAL_MACHINE_32 или HKEY_LOCAL_MACHINE_64. Константы, используемые этим параметром, объявлены в файле ISPPBuiltins.iss. Второй параметр – это имя подраздела реестра. Третий параметр определяет имя считываемого значения; если оно опущено или пустое, считывается значение по умолчанию (безымянное). Последний параметр (Default) является необязательным и может быть использован для установки значения, которое вернёт функция в случае неудачного выполнения операции.
Заметьте, функция может вернуть значение любого типа в зависимости от фактического типа данных в ключе реестра.
Значения типа REG_DWORD рассматриваются как знаковые, поэтому значения 0x80000000 и выше возвращаются как отрицртельные числа. Например, 0xFFFFFFFF возвращается как -1. Чтобы получить беззнаковое значение, примените к результату операцию & 0xFFFFFFFF Поскольку оператор & имеет более низкий приоритет, чем ==, при сравнении беззнакового значения используйте круглые скобки, как показано в примере ниже.
Если указан недопустимый корневой ключ или в 32-разрядной версии Windows запрашиваются 64-разрядные ключи реестра, будет выведена ошибка компилятора.
#if (ReadReg(HKEY_CURRENT_USER, "Software\My Company\My Program", "MyValue") & 0xFFFFFFFF) == 0xFFFFFFFF #pragma message "MyValue is 0xFFFFFFFF" #endif