从Registry中读取Oracle安装的版本

时间:2017-03-24 04:10:31

标签: c# windows oracle registry

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

1 个答案:

答案 0 :(得分:1)

注册表中没有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));
   }
}