Как проверить, есть ли в папке разрешение на запись или нет в Stack Overflow

Я хотел бы написать файл внутри «d: \ test \», к сожалению, у меня нет разрешения на запись в эту папку.
Как проверить, есть ли у этой папки разрешение на запись или нет.

ПРИМЕЧАНИЕ: fopen полезен, но это создает новый файл. Я не хочу создавать exra-файл.

Я также видел CreateFile (), не знаю, как использовать это для этого случая.

1

Решение

Альтернатива 1:

Ты можешь использовать _access или же _access_s проверить, есть ли у файла разрешение.

Дополнительная информация Вот

00 Existence only
02 Write-only
04 Read-only
06 Read and write

Альтернатива 2:

Как вы уже пробовали CreateFileиспользовать GENERIC_WRITE как твой dwDesiredAccess

а затем увидеть ошибку, если таковые имеются.

Подробнее Вот

PS: Если вам все равно нужно проверить (а не записать / создать файл), удалите временный файл, если он уже создан.

2

Другие решения

Просто откройте (и запишите) файл и проанализируйте ошибку, возвращенную системой, если таковая имеется. Проверка наличия у вас прав на отдельную операцию приведет к состоянию гонки, при котором первый вызов сообщает, что вы можете создать файл, а второй — не удается, поскольку между ними изменились права доступа.

2

На самом деле один из способов проверить, есть ли у вас разрешение на запись, — это использовать функции безопасного доступа. Там вы можете запросить все разные права (удалить, создать, написать, индексировать …)

Я никогда не использовал их, поэтому не могу привести пример.

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

Если вы все равно создадите файл, просто используйте CreateFile как упомянуто другими.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector