【发布时间】:2019-05-20 11:17:50
【问题描述】:
那么,让我们从基本问题开始吧;
程序以提升权限的用户身份写入文件。
稍后: 同一程序试图在没有提升权限的情况下覆盖文件。
在 Windows 中,这与:
PermissionError: [Errno 13] Permission denied: '
filepath'
- 我需要它才能在 Linux/Windows/Mac 上工作,尽管它看起来像
windows是目前唯一出现此问题的,所以我尝试了
用windows上的windows方法修复它。
CHMOD下不工作 无论如何都是窗户。 - 所以,问题是,文件归管理员所有,或者
程序运行时具有扩展权限的另一个用户
用户。如果我可以用“
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/*”下。
【问题讨论】:
标签: python multiplatform