J'ai le regret de vous dire que les méthodes d'Otacku et de @clatonh ne fonctionnent pas pour moi - ni Outlook Bitness, ni {90140000-0011-0000- 1000 -0000000FF1CE} dans le registre (pour Office 64 bits sans Outlook installé).
Le seul moyen que j'ai trouvé, sans passer par le registre, est de vérifier le bitness pour l'un des exécutables d'Office en utilisant la fonction de l'API Windows. GetBinaryType (depuis Windows 2000 Professionnel).
Par exemple, vous pouvez vérifier le bitness de Winword.exe, dont le chemin est stocké sous
HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Windows\CurrentVersion\App Chemins d'accès \Winword.exe.
Voici le fragment de code 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
}