Итак, начнем с базовой проблемы;
Программа записывает файл как пользователь с повышенными правами.
В дальнейшем:
Эта же программа пытается перезаписать файл без повышенных прав.
В Windows это конфликтует с:
PermissionError: [Errno 13] В доступе отказано: 'filepath
'
- Мне нужно, чтобы это работало на Linux / Windows / Mac , хотя вроде бы
В данный момент Windows - единственная проблема, поэтому я попытался
исправить это с помощью методов Windows на Windows.
CHMOD
не работает под
окна в любом случае.
- Итак, проблема в том, что файл принадлежит администратору или
другой пользователь с расширенными правами при запуске программы
пользователь. Если я могу просто создать файл с "
everybody write
"
разрешение, то это не будет проблемой.
- Я не нашел переносимого способа сделать это на чистом питоне. Я могу только удалить
флаг
read-only
, но он не решает проблему владения.
Итак, я попробовал win32security
Однако вызов LookupAccountName зависит от локали:
>>> win32security.LookupAccountName(None, "Everyone")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pywintypes.error: (1332, 'LookupAccountName', 'Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt.')
>>> win32security.LookupAccountName(None, "Jeder")
(<PySID object at 0x00000184AA586560>, '', 5)
И поэтому не переносимый. Я также не нашел способа вручную создать SID "Everyone
", документы в этом отношении довольно минимальны. Но я также могу следовать не по той кроличьей норе.
Редактировать: Если это имеет значение, то, по крайней мере, в данном конкретном случае, все соответствующие файлы находятся в «% programdata% / programname / *» в Windows.