根据Oracle客户端安装信息,添加Server名

在Oracle10g上测试过了,其它客户端应该差不多的。
代码
            RegistryKey hklm = Registry.LocalMachine;
            RegistryKey hkSoftware 
= hklm.OpenSubKey("Software");
            RegistryKey hkOracle 
= hkSoftware.OpenSubKey("Oracle");
            
if (hkOracle == null)
            {
                MessageBox.Show(
"未找到Oracle客户端安装路径信息。");
                
return;
            }
            
string OraClient = null;
            
foreach (string tmp in hkOracle.GetSubKeyNames())
            {
                
if (tmp.Contains("KEY_OraClient"))
                {
                    OraClient 
= tmp;
                    
break;
                }
            }
            
if (OraClient == null)
            {
                MessageBox.Show(
"未找到Oracle客户端安装路径信息。");
                
return;
            }

            String path 
= (string)hkOracle.OpenSubKey(OraClient).GetValue("ORACLE_HOME");
            
string tns = File.ReadAllText(Path.Combine(path, @"NETWORK\ADMIN\tnsnames.ora"));
            
if (!Regex.IsMatch(tns, @"(?s)km\s*=\s*\(.+\)"))
                tns 
+= @"
km =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.192.23)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = km)
    )
  )
";
            File.WriteAllText(Path.Combine(path, 
@"NETWORK\ADMIN\tnsnames.ora"), tns);

 

posted @ 2010-03-18 17:03  秦楼东  阅读(532)  评论(0编辑  收藏  举报