Според Oracle тези местоположения се търсят за tnsnames.ora , респ. sqlnet.ora :
- текущ път (свързан с работещото клиентско приложение)
- Променлива на средата
TNS_ADMINопределени за сесията - Променлива на средата
TNS_ADMINопределени за системата - Ключ на системния регистър на Windows
HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(за 64 бита) илиHKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(за 32 бита) %ORACLE_HOME%\network\admin
Не съм сигурен обаче дали всяко приложение/драйвер/версия следва този списък. Този списък е предоставен от Oracle, свързан с версия 9i. Мисля, че ще успеете да направите заявка за тези папки чрез VBScript.
Ако ORACLE_HOME не е зададено от променливата на средата, трябва да направите заявка в регистъра HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (за 64 бита) или HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (за 32 бита)
За ORACLE_HOME_NAME трябва да отидете до вашия Oracle bin папка (да се намери чрез %PATH% Променлива на средата) и отворете файла oracle.key . Това е прост текстов файл, съдържащ само ORACLE_HOME_NAME стойност, напр. OraClient11g_home1 .
Обаче обикновено има само един Oracle Home под HKLM\SOFTWARE\ORACLE , така че търсенето и четенето на файла oracle.key може да е пресилено.
Актуализация
Когато стартирам тест на моята машина (с Oracle Client 11.2), получавам следната поръчка:
- Променлива на средата
TNS_ADMIN HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, респ.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Само акоTNS_ADMINПроменливата на средата не е зададена.%ORACLE_HOME%\network\admin- Текуща директория (която може да е различна от директорията, в която се намира вашето приложение)
- Папка, където се намира вашето приложение
За задълбочен анализ трябва да потърсите tnsnames.ora , sqlnet.ora и ldap.ora . Името на базата данни на Oracle може да бъде разрешено чрез всяка от тях, т.е. връзка може да бъде установена дори когато tnsnames.ora и sqlnet.ora не съществуват.