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