Yes, forget my previous suggestion. If the issue is identifying the version of the Oracle client on various machines, you won't be able to query the server - client information is simply unavailable.
Let me give it another try. I think DBAwhosaysNIE's advice is pretty good. Here are some further observations based on the configurations I see on my own machines.
1. Find out how many Oracle homes exist on the client machine by inspecting HOME_COUNTER in HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_HOMES.
2. If HOME_COUNTER=1:
2a. Get the value, if any, of NET80 in HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE.
2b. If NET80 has been set, the directory $NET80\ADMIN contains TNSNAMES.ORA.
2c. If NET80 has not been set, get the value of ORACLE_HOME in HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE, as DBAwhosaysNIE suggests. Then the directory $ORACLE_HOME\NETWORK\ADMIN contains TNSNAMES.ORA.
3. If HOME_COUNTER>1, then you have to decide which version of Oracle client your application will use. The registry entries for each separate Oracle install appear to be defined in HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0, HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME1, etc.
3a. Let's say you (arbitrarily) decide to run your application using the first Oracle client. Then repeat steps 2a through 2c to get the location of TNSNAMES.ORA, except that you will get registry entries ORACLE_HOME and NET80 from HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 instead of HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE.
I hope this helps. The above logic would correctly identify the location of TNSNAMES.ORA on my machines, but of course I can't guarantee that it will always work.