c# - 特殊文件夹常量的本地化
问题描述
有谁碰巧知道是否有 Windows 10 本地化文件夹的完整列表(就像这个仅适用于所有文件夹的文件夹)?我正在尝试创建一个自定义资源管理器,其中文件夹应该以用户的母语显示。
我已经尝试使用ShellSpecialFolderConstants enumeration
或获取本地化文件夹的完整列表Environment.SpecialFolder enumeration
。但仍有一些缺失(例如 C:/Users)。
SHGetFileInfo
不幸的是,这也是不可能的,因为否则性能会受到很大影响。
我想过简单地为其设计一个长的选择语句,其中存储所有本地化文件夹。如果已经有一个等价表,那么知道它当然会非常方便。
提前致谢!
解决方案
Microsoft 不提供列表,因为您不应该知道,您应该使用特殊/已知文件夹 API。这是为了防止人们进行硬编码c:\Program files
等。在旧版本的 Windows 中,磁盘上的文件夹通常是本地化的。在 Vista 中,这种情况发生了变化,现在真名是英文。
如果您正在构建自定义资源管理器,那么您应该处理IShellFolder
/IShellItem
并且他们可以提供显示名称。
如果您在较低级别工作并忽略 shell 命名空间,您可以调用SHGetLocalizedName
. 此名称可以应用于任何文件夹,而不仅仅是特殊文件夹。
如果您出于某种原因只关心特殊文件夹而不关心一般路径,IKnownFolder::GetFolderDefinition
则声称返回包含本地化名称的结构。
推荐阅读
- c# - 为什么类型推断在这种情况下不起作用?
- vue.js - 使用了Html2canvas截图,但是截图和原图差别很大
- mysql - 如何通过 Laravel 迁移为每一行触发 MySQL 过程
- angular - 如何转到指定的 URL?
- javascript - ScrollMagic + SmoothScroll 口吃
- typo3 - 如何重新排序“Typo3 列表模块中的列列表”
- jquery - 禁用输入,动态隐藏div时选择属性
- java - Java:错误处理不佳,最终抛出
- c++ - 现代 C++ 编译器是否优化了对类的同一数据成员的重复访问?
- r - 如何将自定义 R/Python 代码与 KNIME 集成?