允许所有人通过python进行写访问

时间:2019-05-20 11:17:50

标签: python multiplatform

所以,让我们从基本问题入手;

程序以提升权限的用户身份写入文件。

稍后: 同一程序尝试覆盖没有提升权限的文件。

在Windows中,此冲突与:

  

PermissionError:[Errno 13]权限被拒绝:'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 / *”下。

1 个答案:

答案 0 :(得分:0)

这个问题在1903年的时间范围内随Windows更新之一消失了。如果系统是域的一部分并且所有权属于域用户,则进一步挖掘似乎表明这是Windows中的错误。