Как использовать ShowHelp с виртуальной папкой «Program Files» в Vista - PullRequest
0 голосов
/ 16 апреля 2010

у нас проблема в том, что 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 голосов
/ 16 апреля 2010

Сбой, потому что C: \ Program не настоящая папка - это просто отображаемое имя. В 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 с соответствующим параметром вместо его жесткого кодирования.

...