Я не знаю, почему Explorer запрещает такие переименования, но, скорее всего, это связано с функцией локализации.
Various parts of Explorer use the @<DllName>,<ResourceID>
syntax for dynamically loading localized text – see registry string redirection. (Note that the resource ID is always a decimal number, often negative.)
Например, описание ярлыков .lnk в реестре
@shell32.dll,-4153
означает «загрузить строку с идентификатором -4153 из файла shell32.dll». Поскольку файлы DLL могут иметь отдельную таблицу ресурсов для каждого поддерживаемого языка, результирующее описание будет переведено на любой язык отображения, установленный в Windows.Точно так же ваш рабочий стол; Документы; Фотографий; ... каталоги имеют скрытый
desktop.ini
файл, содержащий:[.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 IconResource=%SystemRoot%\system32\imageres.dll,-183
Когда проводник увидит этот файл, он не просто покажет папку как «Рабочий стол» - он покажет переведенное имя.
Простое использование синтаксиса перенаправления в реальном имени файла / каталога ничего не изменит, но я предполагаю, что было запрещено предотвращать различные ошибки в случае, если программа каким-то образом смешивает «настоящие» и «отображаемые» имена. (Например, если вы назовете каталог @shell32.dll,-21769
, возможно, что программа с ошибками продолжит попытки доступа Desktop
. Это может даже создать проблемы безопасности.)
Так что это будет похоже на различные другие имена, которые Windows разрешает, но Explorer не позволяет (например, .foo
который является обычным «скрытым файлом» для Unixen, но может быть ошибочно принят за файл без имени (только расширение) некоторыми программами Windows).