我有一个程序(用Python3.6编写,使用cx_Freeze转换为Windows的.exe)使用锁文件来标记当前是否正在使用用户登录,以允许在多台计算机上使用相同的登录同时避免可能的数据库损坏。
确认用户登录后立即创建文件(并在用户注销时删除):
lockfile = os.path.join(user_dir, ".locked")
with open(lockfile, "w") as _:
os.utime(lockfile)
在我的Windows 7 Professional机器上,这很好用。它在我的本地Windows 10测试机上也能正常工作。
现在,我在远程位置有一个客户端正在尝试使用该程序。显然,他们一直得到一个权限错误:[Errno 13] Permission denied: '<user_dir>\.locked'
。 (他们的路径似乎有效,程序创建user_dir或编写config.ini
文件没有问题,因此在目录上写入权限应该不是问题。)
某些Windows版本可能在以点开头的文件出现问题吗?可以使用下划线等代替帮助吗?
客户端使用Windows10(Enterprise)版本1809(Build 17763.379)。
(这里很难调试,因为我必须在每次更改后重新编译安装程序,如果这个甚至有意义的话,我们会很高兴...有关这个问题的潜在来源的任何其他想法都是受欢迎的!)
显然,它确实是起始点与一些(但不是全部)Windows版本冲突。我创建了一个新版本,文件名为“_locked”,现在工作正常。
根据这篇文章,创建以点开头的文件名仅添加到Windows 10 1903:
与Windows Server 2019有类似的经验,至少不可能通过文件浏览器添加.files。解决方法是通过PowerShell创建文件,但我想这在这里没有任何帮助。 :|