Dovrebbe essere un problema di directory corrente; quando esegui il programma da Visual Studio, esso viene lanciato usando come directory di lavoro la directory del progetto, per cui vede la sottodirectory, mentre se lo lanci manualmente di default la directory di lavoro sarà la sottodirectory in cui è situato l'eseguibile. Perché il programma veda il file in questione lanciandolo manualmente dovrai fare sì che il percorso usato sia relativo all'eseguibile; può comunque essere una buona idea fare sì che il percorso in questione sia personalizzabile.