2017-03-24 44 views
1

我想讀取已安裝的所有遠程機器的Oracle版本。我知道在註冊表項「HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/inst_loc」中有一個可從中讀取版本的inventory.xml文件。爲了避免讀取xml,是否有任何其他方式通過使用c註冊表中的鍵/值對讀取已安裝版本#從註冊表中讀取Oracle安裝版本

回答

1

版本的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)); 
    } 
}