C# 从注册表读取Oracle安装的版本

C# 从注册表读取Oracle安装的版本,c#,windows,oracle,registry,C#,Windows,Oracle,Registry,我想读取所有远程计算机的已安装Oracle版本。我知道在注册表项“HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/inst_loc”中有一个inventory.xml文件,可以从中读取版本。为了避免读取XML,是否有其他方法可以使用c#从注册表中通过键/值对读取已安装的版本?Oracle版本在注册表中不可用 您的计算机可能安装了多个Oracle客户端。“Oracle客户端”由许多不同的组件组成,原则上它们都可以有不同的版本。读取清单文件是不可靠的,也许在“Oracle In

我想读取所有远程计算机的已安装Oracle版本。我知道在注册表项“HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/inst_loc”中有一个inventory.xml文件,可以从中读取版本。为了避免读取XML,是否有其他方法可以使用c#

从注册表中通过键/值对读取已安装的版本?Oracle版本在注册表中不可用

您的计算机可能安装了多个Oracle客户端。“Oracle客户端”由许多不同的组件组成,原则上它们都可以有不同的版本。读取清单文件是不可靠的,也许在“Oracle Instant Client”的情况下,它甚至没有被创建——它更像是一个日志文件,而不是其他文件

您可以做的是在
PATH
文件夹中搜索文件
oci.dll
,它是每个Oracle客户端的核心dll之一。读取此文件的版本

foreach ( string folder in Environment.GetEnvironmentVariable("PATH").Split(';') ) {
   if ( File.Exists(Path.Combine(folder, "oci.dll")) ) {
      var oraFileVersion = FileVersionInfo.GetVersionInfo(Path.Combine(folder, "oci.dll"));
      Console.WriteLine(String.Format("Found Oracle oci.dll Version {0}.{1}", oraFileVersion.FileMajorPart, oraFileVersion.FileMinorPart));
   }
}