2

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

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

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

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

现在,我有一个远程位置的客户正在尝试使用该程序。显然,他们一直得到一个 Permission Error: [Errno 13] Permission denied: '<user_dir>\.locked'。(它们的路径似乎是有效的,并且程序在创建user_dir 或向其写入config.ini文件时没有问题,因此对目录的写入权限应该不是问题。)

某些 Windows 版本可能对以点开头的文件有问题吗?可以使用下划线等代替吗?

客户端使用 Windows10 (Enterprise) 版本 1809 (Build 17763.379)。

(从这里很难调试,因为我必须在每次更改后重新编译安装程序,如果这有道理的话,我会很高兴......也欢迎任何其他关于潜在问题来源的想法!)

4

2 回答 2

1

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

于 2019-05-13T11:28:28.240 回答
0

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

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

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

于 2019-04-29T14:05:01.423 回答