根据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);

 

你可能感兴趣的:(oracle)