Откройте файл в ProjectedFS с доступом GENERIC_ALL (Projected File System) - PullRequest
0 голосов
/ 23 апреля 2019

Я создал пример приложения, используя Проецируемая файловая система

Я реализовал все необходимые функции, и он хорошо работает, когда я открываю файл из спроектированной FS с доступом GENERIC_READ или GENERIC_WRITE,но когда я пытаюсь использовать GENERIC_ALL, я получаю ошибку об отказе в доступе.

Какова возможная причина получения ошибки access denied?Я получаю сообщение об ошибке, когда файл уже скопирован в предполагаемую файловую систему.

КОД:

HANDLE fHandle = CreateFile(path_to_file_in_projected_fs, GENERIC_ALL, 0, 0, OPEN_EXISTING, 0, 0);

Ожидаемый результат: допустимый дескриптор файла.

Фактический результат: недействительныйобрабатывать с ошибкой доступа отказано (через GetLastError ())

PS GENERIC_READ_WRITE_EXECUTE отлично работает

HANDLE fHandle = CreateFile(path_to_file_in_projected_fs, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

1 Ответ

1 голос
/ 24 апреля 2019

GENERIC_ALL эквивалентно GENERIC_READ |GENERIC_WRITE |GENERIC_EXECUTE? GENERIC_ALL означает «любой возможный уровень доступа» (для файлов это имя FILE_ALL_ACCESS).Это не просто GENERIC_EXECUTE + GENERIC_WRITE + GENERIC_READ, GENERIC_ALL содержит такие вещи, как DELETE, WRITE_DAC (для изменения разрешений) и WRITE_OWNER (для смены владельца).Вы можете проверить Безопасность файлов и Права доступа для доступа FILE_GENERIC_*.

Вы можете попробовать добавить разрешения одно за другим из GENERIC_READ + WRITE + EXECUTE, чтобы увидеть, какие разрешения вызываютвопрос.Однако, вы должны запрашивать только тот уровень доступа, который действительно необходим .

...