如何在Vista的虚拟化“Program Files”文件夹中使用ShowHelp

时间:2010-04-16 13:51:25

标签: c# chm

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

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#中有任何方法可以将文件路径转换为非虚拟化对应文件吗?

或者该问题有其他解决办法吗?

此致

1 个答案:

答案 0 :(得分:0)

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

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

换句话说,根本不要对路径进行硬编码。

如果您必须知道Program Files文件夹的名称,use GetFolderPath with the appropriate parameter而不是硬编码。