允许所有人通过 python 进行写访问
Allow everyone write access through python
所以,让我们从基本问题开始;
程序以提升权限的用户身份写入文件。
稍后:
同一个程序试图在没有提升权限的情况下覆盖文件。
在 Windows 中,这与以下冲突:
PermissionError: [Errno 13] Permission denied: 'filepath
'
- 我需要这个才能在 Linux/Windows/Mac 上工作,虽然它看起来像
windows 是目前唯一出现此问题的,所以我尝试了
在 windows 上使用 windows 方法修复它。
CHMOD
不工作
windows 无论如何。
- 所以,问题是,该文件的所有者是管理员或
当程序为 运行 时,另一个具有扩展权限的用户
用户。如果我可以用“
everybody write
”创建文件
许可,那么这将不是问题。
- 我发现在纯 python 中没有可移植的方法。我只能删除
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)
因此不可移植。我也找不到手动创建“Everyone
”SID 的方法,文档在这方面相当少。但我也可能走错了兔子洞。
编辑:如果重要的话,至少在这种特殊情况下,所有相关文件都在 windows 中的“%programdata%/programname/*”下。
这个问题随着 1903 年时间范围内的 windows 更新之一而消失。一些额外的挖掘似乎表明这是 windows 中的错误,如果该系统是域的一部分并且所有权将落入域用户。
所以,让我们从基本问题开始;
程序以提升权限的用户身份写入文件。
稍后: 同一个程序试图在没有提升权限的情况下覆盖文件。
在 Windows 中,这与以下冲突:
PermissionError: [Errno 13] Permission denied: '
filepath
'
- 我需要这个才能在 Linux/Windows/Mac 上工作,虽然它看起来像
windows 是目前唯一出现此问题的,所以我尝试了
在 windows 上使用 windows 方法修复它。
CHMOD
不工作 windows 无论如何。 - 所以,问题是,该文件的所有者是管理员或
当程序为 运行 时,另一个具有扩展权限的用户
用户。如果我可以用“
everybody write
”创建文件 许可,那么这将不是问题。 - 我发现在纯 python 中没有可移植的方法。我只能删除
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)
因此不可移植。我也找不到手动创建“Everyone
”SID 的方法,文档在这方面相当少。但我也可能走错了兔子洞。
编辑:如果重要的话,至少在这种特殊情况下,所有相关文件都在 windows 中的“%programdata%/programname/*”下。
这个问题随着 1903 年时间范围内的 windows 更新之一而消失。一些额外的挖掘似乎表明这是 windows 中的错误,如果该系统是域的一部分并且所有权将落入域用户。