У меня есть код, который создает файл (ы) в указанной пользователем директории. Пользователь может указать каталог, в котором он не может создавать файлы, но он может переименовать его.
Я создал каталог для тестирования, назовем его C:\foo
.
У меня есть следующие разрешения для C:\foo
:
- Каталог перемещения / Выполнить файл
- Удаление подпапок и файлов
- Удаление
- Разрешения на чтение
- Изменение разрешений
- взять на себя ответственность
У меня нет следующих разрешений для C:\foo
:
- Полный контроль
- Создание файла
- Создание папки
Пока я пробовал следующие подходы:
<br>
os.access('C:\foo', os.W_OK) == True </p>
<p>st = os.stat('C:\foo')<br>
mode = st[stat.ST_MODE]<br>
mode & stat.S_IWRITE == True
Я считаю, что это связано с тем, что я могу переименовать папку, поэтому она может быть изменена для меня. Но это содержание - нет.
Кто-нибудь знает, как я могу написать код, который будет проверять заданный каталог, если у текущего пользователя есть разрешения на создание файла в этом каталоге?
Вкратце - я хочу проверить, есть ли у текущего пользователя Создание файла и Создание папки Разрешения для данного имени папки.
РЕДАКТИРОВАТЬ: Необходимость такого кода возникла из контрольного примера № 3 из программы «Сертифицировано для Windows Vista», в котором говорится:
- Приложение не должно позволять пользователю с наименьшими правами сохранять какие-либо файлы в системный каталог Windows, чтобы пройти этот тестовый пример.
Следует ли это понимать как «Приложение может пытаться сохранить файл в системном каталоге Windows, но не должно аварийно завершить работу при сбое?» или, скорее, «Приложение должно выполнить проверки безопасности, прежде чем пытаться сохранить файл?»
Должен ли я перестать беспокоиться только потому, что сама Windows Vista не позволяет пользователю с наименьшими привилегиями сохранять какие-либо файлы в% WINDIR%?