首页 > 解决方案 > 特殊文件夹常量的本地化

问题描述

有谁碰巧知道是否有 Windows 10 本地化文件夹的完整列表(就像这个仅适用于所有文件夹的文件夹)?我正在尝试创建一个自定义资源管理器,其中文件夹应该以用户的母语显示。

我已经尝试使用ShellSpecialFolderConstants enumeration或获取本地化文件夹的完整列表Environment.SpecialFolder enumeration。但仍有一些缺失(例如 C:/Users)。

SHGetFileInfo不幸的是,这也是不可能的,因为否则性能会受到很大影响。

我想过简单地为其设计一个长的选择语句,其中存储所有本地化文件夹。如果已经有一个等价表,那么知道它当然会非常方便。

提前致谢!

标签: c#c++windowsdirectoryexplorer

解决方案


Microsoft 不提供列表,因为您不应该知道,您应该使用特殊/已知文件夹 API。这是为了防止人们进行硬编码c:\Program files等。在旧版本的 Windows 中,磁盘上的文件夹通常是本地化的。在 Vista 中,这种情况发生了变化,现在真名是英文。

如果您正在构建自定义资源管理器,那么您应该处理IShellFolder/IShellItem并且他们可以提供显示名称。

如果您在较低级别工作并忽略 shell 命名空间,您可以调用SHGetLocalizedName. 此名称可以应用于任何文件夹,而不仅仅是特殊文件夹。

如果您出于某种原因只关心特殊文件夹而不关心一般路径,IKnownFolder::GetFolderDefinition则声称返回包含本地化名称的结构。


推荐阅读