2016-09-21 4 views
1

У меня есть программа на C#, которая использует базу данных SQLite для чтения/записи данных. Эта программа требует повышения UAC, и я требую, чтобы она работала в любое время. Когда я запускаю эту программу вручную, которую я должен «запускать как admin», моя база данных SQLite функционирует нормально, способная читать/записывать данные в файл базы данных. Однако моя проблема заключается в том, что я пытаюсь запустить эту программу автоматически при запуске компьютера.SQLite reader.read() всегда возвращает false при выполнении из планировщика заданий

Как я упоминал ранее, мне требуется, чтобы эта программа выполнялась в любое время. Итак, я поставил пару вещей на место, которые повторно запускают программу в случае ее сбоя (что отлично работает). Однако мне также нужно это, чтобы начать выполнение, когда компьютер перезагрузится. Обычно это не проблема, но для этой программы требуется UAC, и я редко буду рядом, чтобы щелкнуть Да в диалоговом окне UAC, поэтому я читаю, и, похоже, единственный способ сделать это - настроить задачу в планировщике задач. Итак, я поставил задачу запустить это при запуске. После тестирования программа выполняет, но не работает правильно. При дальнейшей отладке я обнаружил, что каждый раз, когда мой код достигает строки SQLiteDataReader.read(), он всегда возвращает false, даже если я знаю, что там есть записи, но это происходит только тогда, когда программа выполняется через Task Scheduler. Похоже, что из SQLite ошибок не возникает. Я подозреваю, что права на файлы являются проблемой, но не знают, как их решить.

Несколько вещей, чтобы отметить то, что я уже пробовал. 1) В Планировщике заданий я установил это для выполнения с использованием той же самой учетной записи пользователя, которую я использовал для ее запуска вручную, а также администратора домена, администратора и локальной учетной записи администратора. 2) Задана задача «запустить с наивысшими привилегиями» 3) Я изменил разрешения безопасности на полный доступ практически для каждого объекта, который я могу думать (админы, администраторы домена, пользователи, все и т. Д.) На как корневую папку программы, так и файл базы данных SQLite. 4) Я даже попытался переместить все приложение за пределы папки Program Files, если там был какой-то ограниченный доступ.

Я нахожусь в своем уме, пытаясь понять это. Любые идеи о том, что попробовать дальше? Или другие решения, чтобы заставить это правильно выполнить при запуске без взаимодействия с пользователем?

+1

Неужели вы пробовали обычную папку автозагрузки? – Bytemain

ответ

1

Я немного опоздал с сообщением об этой проблеме. Глупо с моей стороны ... Планировщику задач просто нужно было указать путь к папке файлов приложений как путь запуска. Поэтому он не нашел файл базы данных, так как мой путь использует относительные пути к ссылке. Я лично не понимаю, почему это не всегда должно быть просто по умолчанию для папки приложения, но вы живете, и вы учитесь и стучите головой обо всем, что находится между ними.

+0

Большое спасибо, вы спасли мой день! – Bytemain