도움말 파일의 경로 이름에 가상화 된 폴더 이름이 포함되어 있으면 ShowHelp가 Vista 및 Windows Server 2008에서 실패하는 것으로 나타납니다. 예를 들어, 독일어 버전 Vista에서는 "프로그램 파일"을 "프로그램"이라고합니다. ShowHelp를 Vista의 가상화 된 "Program Files"폴더와 함께 사용하는 방법
System.Windows.Forms.Help.ShowHelp(null,
@"C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\spyxx.chm");
성공 wheras
System.Windows.Forms.Help.ShowHelp(null,
@"C:\Programme\Microsoft Visual Studio 9.0\Common7\Tools\spyxx.chm");
실패 호출.
C#에서 파일 경로를 가상화되지 않은 파일 경로로 변환하는 방법이 있다면?
다른 문제가 있습니까? \ 프로그램 실제 폴더 아니다 - 그냥 표시 이름입니다 : C가 있기 때문에
안부
실제로 위의 "Visual Studio"경로 이름은 문제가 Google 도움말 파일의 버그가 아님을 보여주기위한 예제 일뿐입니다. 저희 프로그램은 설치가 필요 없습니다 (즉, 대상 폴더에 복사 만 가능). 따라서 레지스트리를 사용하여 설치 위치를 결정할 수 없습니다. 설치 위치를 얻으려면 Assembly.Location 또는 유사한 방법에 의존해야합니다. 이러한 메서드는 항상 "Program Files"대신 "Program"을 반환합니다. –
@fmunkert : 그 동작을 재현 할 수 없습니다. 테스트 응용 프로그램을 만들고 Assembly.GetExecutingAssembly()를 인쇄합니다. Location은 Explorer에 표시되는 현지화 된 이름이 아니라 영어 이름을 제공합니다.이 이름은 지역화 된 파일을 표시하려는 경우 Windows API를 사용해야하기 때문에 *해야합니다 * 진짜 이름 대신 이름. –