6

Windows 7(可能还有 Windows Vista)使用文件中的LocalizedResourceName条目显示本地化的文件夹名称desktop.ini。对于我的Documents文件夹,这看起来像

[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770
IconResource=%SystemRoot%\system32\imageres.dll,-112
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-235

(见这个问题)

这样,资源管理器在德语 Windows 上将路径“C:\Users\Username\Documents”显示为“C:\Benutzer\Username\Dokumente”。

我想知道,是否有任何内置的 shell 函数可以自动获取此本地化名称,或者更好的是,将整个路径转换为其本地化形式(最好是 .NET 中的任何内容)?

这更有趣,因为该LocalizedResourceName条目仅针对 Windows CE 进行了记录(请参见此处)。

谢谢

马丁

4

2 回答 2

5

SHGetLocalizedName ()。Michael Kaplan 的博客上有一个 PInvoke 示例。

于 2011-01-14T20:51:42.807 回答
0

我很确定没有将路径转换为其本地化形式的功能,因为当您看到更大的图景时,它没有意义。如果您有漫游配置文件,甚至可能没有“用户”或“Benutzer”文件夹,因为它都在服务器管理员放置的任何位置。

它还引出了如何调用此函数的问题。为了争论起见,我们假设您使用美国英语默认值调用它。如果你说“给我 c:\Users\Bob 的德文本地化版本”,Vista 和 Windows 7 会很好,但 XP 不知道“用户”文件夹。因此,如果没有您无法保证会安装的向后补丁,它就会中断。

通常,Microsoft 建议不要担心路径的左半部分。相反,您只应该使用枚举Environment.GetFolderPath()之一并将其传递给它。SpecialFolder特殊文件夹部分之后的任何内容都由您定义和创建,仅此而已。您的代码应该说,“相对于桌面创建一个名为 Bob 的文件夹”。任何解决的问题都不应被存储,因为有一天这条路径可能会改变,

于 2011-01-14T16:47:40.417 回答