I need to determine from a program what version of Oracle is installed in each of the Oracle Homes on a server. As there may not be any databases created in the Home yet, I need to be able to do this outside of the database (i.e., without connecting to the database). Also, it would be highly preferable to be able to do this from a remote program.
This is from a windows program running .Net (C#, if that matters).
I am currently reading remote registry keys (using this technique: How to Read Remote Registry Keys?), to find all of the Oracle Homes according to this method. This works fine, however, I have looked around those keys and do not see any information on the exact version/release.
The name of an Oracle Home itself is of course 1) not a reliable indicator and 2) does not have the exact version/release (for instance "10.2.0.4.0"). Basically I am looking for a way to figure out what the Oracle Universal Installer tells you in the Installed Products button.
Search for file
oci.dllinPATH, this is one of the major files of an Oracle Client installation. You can read version of this file withFileVersionInfo.GetVersionInfo("oci.dll");In order the get the Registry Hive, search for file
oracle.regin PATH (i.e. Oracle Home). This file is a simple text file containing the Registry key, for exampleSOFTWARE\ORACLE\KEY_OraClient11g_home1. You will find related registry values inHK_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1`