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.dll
inPATH
, 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.reg
in 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
`