ale*_*lim 6 windows windows-explorer filenames
我知道文件和文件夹名称中的许多限制和特殊字符无法使用,否则会在以后造成麻烦。
例如,在名称末尾放置一个点会使其消失。
资源管理器本身有更多限制,例如文件名开头的点很难放置。
好的,但是 at-sign 有什么问题@!?
我没有看到任何关于它的限制,现在我也找不到它。
看:
1) 打开 Windows 资源管理器并创建一个名称为1,1
2)的文件或文件夹2) 按 F2 并将其重命名为@1,1
3) 看到了吗?新名称被取消。
我的问题是:为什么?
我在 XP、Win7 和 Win10 上测试了这个“功能”。
WinXP 中有趣的事情是重命名0,0为@0,0实际上将其重命名为@0.
看起来这是内部资源管理器的行为,因为在 CMD 控制台中完全可以做到 cd.>"@1,1"
我不知道为什么 Explorer 禁止这样的重命名,但这可能与本地化功能有关。
Explorer 的各个部分使用@<DllName>,<ResourceID>动态加载本地化文本的语法 - 请参阅注册表字符串重定向。(请注意,资源 ID 始终是十进制数,通常为负数。)
例如,注册表中 .lnk 快捷方式的描述是@shell32.dll,-4153,意思是“从文件 shell32.dll 加载 ID 为 -4153 的字符串”。由于 DLL 文件可以为每种支持的语言提供单独的资源表,因此生成的描述将被转换为 Windows 设置的任何显示语言。
同样,您的桌面;文件;图片; ...目录有一个隐藏desktop.ini文件,其中包含:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769
IconResource=%SystemRoot%\system32\imageres.dll,-183
Run Code Online (Sandbox Code Playgroud)
当资源管理器看到此文件时,它不仅会将该文件夹显示为“桌面”,还会显示翻译后的名称。
简单地在实际文件/目录名称中使用重定向语法不会做任何事情,但我的猜测是禁止防止各种错误,以防程序以某种方式混淆“真实”和“显示”名称。(例如,如果您命名一个 directory @shell32.dll,-21769,则可能有错误的程序会继续尝试访问Desktop。这甚至可能会产生安全问题。)
因此,这将类似于 Windows 允许但资源管理器不允许的各种其他名称(例如.foo,这是 Unixen 的常规“隐藏文件”,但可能会被某些 Windows 程序误认为是无名(仅扩展名)文件)。
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |