我想读取所有远程机器的已安装Oracle版本。 我知道在registry项“HKEY_LOCAL_MACHINE / SOFTWARE / ORACLE / inst_loc”中有一个inventory.xml文件,可以从中读取版本。 为了避免读取xml,是否有任何其他方式来读取通过键/值对从registry使用安装的版本c#
Oracle的版本在注册表中不可用。
您的计算机可能安装了多个Oracle客户端。 “Oracle客户端”由许多不同的组件组成,原则上它们都可以有不同的版本。 读取库存文件是不可靠的,也许在“Oracle即时客户端”的情况下,甚至没有创建 – 它更像是一个日志文件,没有别的。
你可以做的是搜索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)); } }