C#: консольное приложение - ошибка

Рейтинг: 1Ответов: 2Опубликовано: 03.04.2015

Добрый день.

Я на C# написал консольное приложение, которое просто скачивает файл с ресурса в указанную в конфиге папку.

Получилась интересная ситуация - запускаю (из Visual Studio) F5 (в отладке) - работает все нормально, как положено. Но если я запускаю через Ctrl+F5 - пишет "указанный путь был использован при запуске cmd.exe в качестве текущей папки. cmd не поддерживает пути UNC..." после чего программа валится, т.к. она пытается читать файл настроек НЕ из каталога программы а из папки Windows.

введите описание изображения здесь

Я поставил задачу через Постановщик задач, который запускает прогу раз в 1 час, и он запускает - но вылетает такая ошибка, и программа валится.

Интересно,что если прогу запускать просто через exe-файл, все работает нормально.

Подскажите, как сделать так, чтобы программа запускалась через шедулер нормально?

С уважением, Л.

Ответы

▲ 3Принят

Настройки приложения (если это не app.config, а отдельный файл, в который приложение будет сохранять свои параметры) лучше хранить в директории пользователя, т.к. в директории приложения может не быть соответствующих прав на запись файлов.

Директорию пользователя, где у приложения точно есть права на запись, можно получить так:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

Но нужно иметь в виду, что под другим пользователем Windows это будет другая директория.

▲ 1

Попробуй для формирования пути использовать AppDomain.CurrentDomain.BaseDirectory

Это вернет тебе путь к директории, где реально лежит твой exe, а не где его рабочая папка.