Я хотел бы написать файл внутри «d: \ test \», к сожалению, у меня нет разрешения на запись в эту папку.
Как проверить, есть ли у этой папки разрешение на запись или нет.
ПРИМЕЧАНИЕ: fopen полезен, но это создает новый файл. Я не хочу создавать exra-файл.
Я также видел CreateFile (), не знаю, как использовать это для этого случая.
Альтернатива 1:
Ты можешь использовать _access
или же _access_s
проверить, есть ли у файла разрешение.
Дополнительная информация Вот
00 Existence only
02 Write-only
04 Read-only
06 Read and write
Альтернатива 2:
Как вы уже пробовали CreateFile
использовать GENERIC_WRITE
как твой dwDesiredAccess
а затем увидеть ошибку, если таковые имеются.
Подробнее Вот
PS: Если вам все равно нужно проверить (а не записать / создать файл), удалите временный файл, если он уже создан.
Просто откройте (и запишите) файл и проанализируйте ошибку, возвращенную системой, если таковая имеется. Проверка наличия у вас прав на отдельную операцию приведет к состоянию гонки, при котором первый вызов сообщает, что вы можете создать файл, а второй — не удается, поскольку между ними изменились права доступа.
На самом деле один из способов проверить, есть ли у вас разрешение на запись, — это использовать функции безопасного доступа. Там вы можете запросить все разные права (удалить, создать, написать, индексировать …)
Я никогда не использовал их, поэтому не могу привести пример.
Помните, однако, что между проверкой ваших прав доступа и созданием файла или записью может быть изменение прав доступа, и оно все равно может потерпеть неудачу. Состояние гонки, упомянутое другими.
Если вы все равно создадите файл, просто используйте CreateFile
как упомянуто другими.