Win32 не позволяет создавать файлы или папки с именами, заканчивающимися на .
- все точки удаляются с конца. Попытка создания test.
делает test
появление вместо этого. (Это для совместимости с именами 8.3 в старом программном обеспечении эпохи DOS / Win9x.)
В результате, когда вы пытаетесь получить доступ к папке с именем ....
, ее имя сводится к пустой строке, и вы возвращаетесь к папке, в которой вы были раньше.
Ядро NT, однако, допускает такие имена. Существуют различные механизмы, которые обходят ограничения имен файлов, налагаемые API-интерфейсами Win32 - например, WSL (Windows Subsystem для Linux) не работает поверх Win32 и не подвержен его влиянию. Существует также \\?\
метод обхода, намеренный «черный ход», оставленный для программ, которые знают, что они делают. Даже если вы не можете создать C:\Example\....\
, вы можете создать \\?\C:\Example\....\
просто отлично.
Также вы можете удалить такие каталоги с помощью rmdir \\?\C:\path\...
Cmd (я еще не тестировал PowerShell).
Различные файловые менеджеры, архиваторы и т. Д. Могут использовать этот \\?\
метод, чтобы иметь возможность использовать более длинные пути, чем обычно, - и при этом на них также не влияет код совместимости в Win32; они обходят удаление точек, а также перевод волшебных имен файлов, таких как CON
или NUL
.
Так что это может быть одна из ваших программ:
- всегда использует
\\?\
для доступа к файлам, - случайно попытался создать папку с именем
....
- но на самом деле невозможно узнать наверняка после факта.