Windows 以点开头的文件引发 PermissionError?

Windows file starting with dot raises PermissionError?

我有一个程序(用 Python3.6 编写,使用 cx_Freeze 转换为 Windows 的 .exe)使用锁定文件来标记用户是否-当前正在使用登录名,以允许在多台计算机上使用相同的登录名,同时避免可能的数据库损坏。

确认用户登录后立即创建文件(并在用户注销时删除):

lockfile = os.path.join(user_dir, ".locked")
with open(lockfile, "w") as _:
    os.utime(lockfile)

在我的 Windows7 Professional 机器上,这工作正常。它在我本地的 Windows10 测试机上也能正常工作。

现在,我有一个远程位置的客户端正在尝试使用该程序。显然,他们总是收到权限错误:[Errno 13] Permission denied: '<user_dir>\.locked'。 (他们的路径似乎是有效的,程序没有问题 creating the user_dir,或者写一个 config.ini 文件给它,所以目录的写权限不应该成为问题。)

某些 Windows 版本可能无法处理以点开头的文件? 可以使用下划线等替代帮助吗?

客户端使用Windows10(企业)版本1809(内部版本17763.379)。

(很难从这里进行调试,并且由于我必须在每次更改后重新编译安装程序,如果这甚至有意义的话,我会很高兴...关于问题的潜在来源的任何其他想法也欢迎您!)

根据这篇文章,创建以点开头的文件名仅添加到 Windows 10 1903:

https://www.ghacks.net/2019/02/25/windows-10-1903-support-for-filenames-and-folders-with-beginning-dot-character/

在 Windows 服务器 2019 上有类似的经历,至少不可能通过文件资源管理器添加 .files。解决方法是通过 PowerShell 创建文件,但我想这在这里并没有多大帮助。 :|

显然,它确实是起始点与某些(但不是全部)Windows 版本发生冲突。我创建了一个新版本,文件名为“_locked”,现在可以正常工作了。