Файл Windows, начинающийся с точки, поднимает PermissionError? - PullRequest
2 голосов
/ 29 апреля 2019

У меня есть программа (написанная на Python3.6, преобразованная в .exe для Windows с использованием cx_Freeze), которая использует файл блокировки, чтобы указать, используется ли в данный момент логин пользователя, чтобы разрешить использование того же логина на нескольких компьютерах, избегая возможных повреждений базы данных

Файл создается сразу после подтверждения входа пользователя (и удаляется при выходе пользователя):

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'. (Кажется, что их путь действителен, и у программы нет проблем , создающих user_dir или записывающих в него файл config.ini, так что права на запись в каталог не должны быть проблемой.)

Могут ли некоторые версии Windows иметь проблемы с файлами, начинающимися с точки? Может ли помочь использование подчеркивания и т. Д. Вместо этого?

Клиент использует Windows10 (Enterprise) версии 1809 (сборка 17763.379).

(Отсюда трудно отлаживать, и, поскольку мне приходится перекомпилировать установщик после каждого изменения, было бы неплохо иметь идею, если это даже имеет смысл ... Любые другие мысли о потенциальных источниках проблемы приветствуются Тоже!)

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Очевидно, это действительно была начальная точка, сталкивающаяся с некоторыми (но не всеми) версиями Windows. Я создал новую версию, где файл называется «_locked», и теперь он работает нормально.

0 голосов
/ 29 апреля 2019

Согласно этой статье, создание имен файлов, начинающихся с точек, добавляется только в 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, хотя, думаю, это не очень помогает.: |

...