Kennt der Dienst das Laufwerk X: ?
Mach' Dir mal 'ne Stringliste vor die Anmeldung und lade in die die TNSNames.ora.
Klappt das oder gibt es dabei 'nen Fehler? Dann kennt der Dienst irgendwas im Dateisystem nicht. Und der Fehler "Could not locate OCI
dll" deutet sehr stark darauf hin.
Mir scheint da die tatsächliche Umgebung des Dienstes deutlich von der erwarteten abzuweichen.
Lies Dir im Dienst mal mit GetEnvironmentStrings die Umgebungsvariabeln ein und schreib' das Ergebnis in 'ne Datei. Den Inhalt der Datei vergleichst Du mit den Umgebungsvariabeln der funktionierenden Konsolenanwendung.
Gibt es Unterschiede, fehlen eventuell die für Oracle nötigen Variabeln?
Ist die OCI.dll über die Umgebungsvariabel Path des Dienstes zu finden?