Ошибка ERROR_ACCESS_DENIED при открытии файла

188
07 декабря 2017, 00:49

Доброго времени суток. Суть вопроса такова:

В программе с помощью функции WinAPI открываю файл

HRESULT ReadFile(LPCWSTR name)
{
    HRESULT hr = S_OK;
    DWORD   Error = 0;
    HANDLE  OResult= 0;
    // Open file
    OResult = CreateFile(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (OResult == INVALID_HANDLE_VALUE)
    {
        Error = GetLastError();
    }
return hr;
}

И все вроде-бы хорошо - при запуске программы из проводника файл открывается, читается, но когда моя программа запускается через автозапуск (прописана в "Software\\Microsoft\\Windows\\CurrentVersion\\Run") то GetLastError() возвращает код ошибки 5 (ERROR_ACCESS_DENIED).

Сейчас изучаю Access Control Model но пока безрезультатно.
Может кто сталкивался или знает подскажите, пожалуйста, в чем причина, куда копать?

ps: файл для открытия создан той же программой до перезагрузки, лежит в папке с экзешником. Другим процессом не открыт (вроде бы.. хотя как проверить?).

@Владимир Мартьянов: Если файла нет, возвращает ту-же ошибку.

Решено: отключением UAC в манифесте проекта. Иначе запуск программы из ветки HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run происходит с ограничеными правами.

READ ALSO
Не могу записать числовые данные в текстовый файл

Не могу записать числовые данные в текстовый файл

Подскажите пожалуйста, почему я могу считывать данные с файла, но значения переменных dblx, dblResult не записываются в файлНе могу найти ошибку

208
Перегрузка оператора =

Перегрузка оператора =

В общем есть такой код перегрузки оператора в классе нужно что бы оператор при присваивании менял значение поля материалКод вроде верно...

157
LU разложение неквадратной матрицы

LU разложение неквадратной матрицы

На википедии LU разложение определено как разложение всякой матрицы в произведение двух квадратных матрицНо как тогда сделать LU разложение...

178
Считать и вывести вектор векторов

Считать и вывести вектор векторов

Считывает ввод, но не выводит вектор

212