С сожалением говорю, но методы Otacku и @ clatonh у меня не работают - ни Outlook Bitness, ни {90140000-0011-0000- 1000 -0000000FF1CE} в реестре (для 64-битных Офис без установленного Outlook).
Единственный способ, который я нашел, но не через реестр, - это проверить битность одного из исполняемых файлов Office с помощью функции Windows API GetBinaryType (начиная с Windows 2000 Professional).
Например, вы можете проверить битность Winword.exe, путь которого хранится в
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Пути к файлам \ Winword.exe.
Вот фрагмент кода MFC:
CRegKey rk;
if (ERROR_SUCCESS == rk.Open(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Winword.exe",
KEY_READ)) {
CString strWinwordPath;
DWORD dwSize = MAX_PATH;
if (ERROR_SUCCESS == rk.QueryStringValue(strWinwordPath,
strWinwordPath.GetBuffer(MAX_PATH), &dwSize)) {
strWinwordPath.ReleaseBuffer();
DWORD dwBinaryType;
if (::GetBinaryType(strWinwordPath, &dwBinaryType)) {
if (SCS_64BIT_BINARY == dwBinaryType) {
// Detected 64-bit Office
} else {
// Detected 32-bit Office
}
} else {
// Failed
}
} else {
// Failed
}
} else {
// Failed
}