Answers to your questions:
1. Do you have permissions set for your sqlnet.ora?
For testing I've set permissions for everyone. This should not be a problem.
2. Can you tell us the path of where your tnsnames.ora and sqlnet.ora files are kept?
My Files are in the first home C:\\ORANT\\NETWORK\\ADMIN.
3. Can you connect to your databases via manual connection?
Yes, I've no problems using .net Code or Tools like Sql Developer.
I've played with your Dlls to reproduce the error.
The code fills a Comboxbox with the Values of "RedGate.Oracle.Utils.GetOracleHomes()" and selects the first index.
This causes the call to the method "RedGate.Oracle.Utils.TNSNames.GetTNSEntries(string oracleHome)" (in my case c:\\orant\\network\\admin).
When I call this method via my own application, the error could be reproduced.
When I try to call the method "GetTNSEntriesFromFile" with the path "c:\\orant\\network\\admin\\tnsnames.ora" manually, the list is successfully filled.
Maybe there is an error with the path in the function "GetTNSEntries" in combination with my first home?
Please let me know if this helps.
I've tried to check what goes on in the named methods with reflector.
It seems that the method "GetTNSEntriesFromFile" gets the value of the registry key from my first Oracle Home without the path to the tnsnames.ora and tries to open the path instead of the file.
Maybe thats the problem with the "access denied" error.
I've updated the TNS_ADMIN Key to include the file "tnsnames.ora" and then the app starts up.
Maybe I've a corrupted regitry keys but the problem is solved so far.