Информация о новой ошибке Windows 10: ERROR_CLOUD_FILE_ACCESS_DENIED - PullRequest
1 голос
/ 29 марта 2019

Запуск в новый код ошибки Windows 10, открывающий файл для чтения с CreateFile().Мы получаем ошибку 395 , но недостаточно информации о том, что это значит или как ее устранить.Подробности ошибки из Windows 10 SDK следующие:

  • Номер ошибки 395
  • Постоянная ошибки ERROR_CLOUD_FILE_ACCESS_DENIED
  • Ошибка ОСсообщение «Доступ к облачному файлу запрещен».

Данный компьютер является Windows 10 Professional.Он работает OneDrive, но файл не находится в папке OneDrive.Мы подозреваем, что OneDrive, возможно, использует функция перемещения известных папок функция

Код, используемый для открытия файла:

HANDLE hnd = ::CreateFile(fname,
        GENERIC_READ,
        FILE_SHARE_READ,
        NULL,
        OPEN_EXISTING,
        FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_SEQUENTIAL_SCAN,
        NULL);
if (hnd == INVALID_HANDLE_VALUE) {
    DWORD exitcode = ::GetLastError();
    printf("%d\n", exitcode);
    }

Если кто-то сталкивался с этой проблемой, мы 'Буду признателен за любые идеи, которыми вы можете поделиться.

1 Ответ

0 голосов
/ 30 апреля 2019

После тщательного исследования мы обнаружили, что это было вызвано простой проблемой разрешения.У пользовательского процесса, выполняющего вызов CreateFile(), не было разрешений на доступ к файлу, который хранился в облаке.OneDrive Known File Move даже не осознавая, что папка будет храниться в облаке.

Как только мы поняли, что это проблема с облачным разрешением, было легко исправить облачное разрешение, чтобы пользовательский процесс мог открыть файл.

В нашем конкретном случае мы договорились запустить наш процесс как Администратор , что позволило нашему вызову CreateFile() выполнить успешно.Если вы пытаетесь получить доступ к файлу, который хранится в общей папке OneDrive, принадлежащей другому пользователю, вы не сможете использовать это решение.Вам нужно будет попросить владельца файла предоставить вам запрашиваемый доступ.

...