0

如果帮助文件的路径名包含虚拟化文件夹名称,我们会遇到在 Vista 和 Windows Server 2008 下 ShowHelp 似乎失败的问题。例如,在德文版 Vista 下,“Program Files”被称为“Programme”。通话

System.Windows.Forms.Help.ShowHelp(null, 
   @"C:\Programme\Microsoft Visual Studio 9.0\Common7\Tools\spyxx.chm");

失败,而

System.Windows.Forms.Help.ShowHelp(null,
   @"C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\spyxx.chm");

成功。

如果 C# 中有任何方法可以将文件路径转换为其非虚拟化对应项?

或者有没有其他解决这个问题的方法?

问候

4

1 回答 1

0

它失败了,因为 C:\Programme 不是真正的文件夹 - 它只是一个显示的名称。在 Vista 和 7 上,无论操作系统语言如何,这些文件夹总是有英文名称。

正确的方法是查看注册表并查看它的安装位置。在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0 中查找 InstallDir 键。这将类似于 c:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\ 如果你有 - 然后你可以操纵这个路径来代替 Common7\Tools。

换句话说,不要硬编码路径。

如果您必须知道 Program Files 文件夹的名称,请使用带有适当参数的 GetFolderPath,而不是对其进行硬编码。

于 2010-04-16T14:03:44.173 回答