Раздел реестра Outlook Bitness не существует на моем компьютере.
Одним из способов определения битности Outlook является изучение самого Outlook.exe и определение, является ли он 32-битным или 64-битным.
В частности, вы можете проверить тип [IMAGE_FILE_HEADER.Machine] [1], и это вернет значение, указывающее тип процессора.
Чтобы получить отличную предысторию этого обсуждения, прочитав PE-заголовок файла, прочитайте this (устаревшая ссылка) , в котором говорится:
Структура IMAGE_NT_HEADERS является основным местом, где хранятся особенности PE-файла. Его смещение задается полем e_lfanew в IMAGE_DOS_HEADER в начале файла. На самом деле существует две версии структуры IMAGE_NT_HEADER, одна для 32-битных исполняемых файлов, а другая для 64-битных версий. Различия настолько незначительны, что я буду считать их одинаковыми для целей этого обсуждения. Единственный правильный, одобренный Microsoft способ различения этих двух форматов заключается в значении поля Magic в IMAGE_OPTIONAL_HEADER (описывается в ближайшее время).
IMAGE_NT_HEADER состоит из трех полей:
typedef struct _IMAGE_NT_HEADERS {
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_OPTIONAL_HEADER32 OptionalHeader;
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
и вы можете получить код c # здесь .
Поле Magic находится в начале структуры IMAGE_OPTIONAL_HEADER, 2 байта со смещением 24 от начала _IMAGE_NT_HEADERS. Он имеет значения 0x10B для 32-разрядных и 0x20B для 64-разрядных.