Доброго времени суток. Суть вопроса такова:
В программе с помощью функции 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 происходит с ограничеными правами.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей