2017-03-24 10 views
1

すべてのリモートマシンのインストール済みOracleバージョンを読みたい。レジストリキー "HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/inst_loc"には、バージョンを読み取るためのinventory.xmlファイルがあります。 xmlの読み込みを避けるために、レジストリからキー/値のペアを使用してインストールされたバージョンを読み取る方法はありますか?C#レジストリからOracleインストールされたバージョンを読み取る

答えて

1

Oracleのバージョンはレジストリでは使用できません。

マシンに複数のOracleクライアントがインストールされている可能性があります。 「Oracleクライアント」は、多くの異なるコンポーネントで構成されています。原則として、すべてが異なるバージョンを持つことができます。インベントリ・ファイルの読込みは信頼性がありません。「Oracle Instant Client」の場合は作成されていない可能性もあります。これはログ・ファイルのようなものです。

あなたができることは、各OracleクライアントのコアDLLの1つであるoci.dllファイルのPATHフォルダを検索することです。このファイルのバージョンを読んでください。

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)); 
    } 
} 
関連する問題