Does anyone know what would be the best way to detect which version of Office is installed? Plus, if there are multiple versions of Office installed, I'd like to know what versions they are. A bonus would be if I can detect the specific version(s) of Excel that is(/are) installed.
One way to check for the installed Office version would be to check the
InstallRoot registry keys for the Office applications of interest.
For example, if you would like to check whether Word 2007 is installed you should check for the presence of the following Registry key:
This entry contains the path to the executable.
Replace 12.0 (for Office 2007) with the corresponding version number:
Office 97 - 7.0 Office 98 - 8.0 Office 2000 - 9.0 Office XP - 10.0 Office 2003 - 11.0 Office 2007 - 12.0 Office 2010 - 14.0 (sic!) Office 2013 - 15.0 Office 2016 - 16.0
The other applications have similar keys:
Or you can check the common root path of all applications:
Another option, without using specific Registry keys would be to query the MSI database using the
MSIEnumProducts API as described here.
As an aside, parallel installations of different Office versions are not officially supported by Microsoft. They do somewhat work, but you might get undesired effects and inconsistencies.