2010-03-29 4 views
7

쿼리 : ExpandEnvironmentStrings("%COMMONPROGRAMFILES%"), GetSpecialPath(CSIDL_PROGRAM_FILES_COMMON).WOW64 : 32 비트 프로세스에서 x64 % CommonProgramFiles % 가져 오기

모두 내 32 비트 앱에서 (일반적으로) c:\\Program Files (x86)\\Common Files으로 해결됩니다. 파일 버전이 (일반적으로) c:\\Program Files\\Common Files에서 64 비트 응용 프로그램 아래에 설치되어 있는지 확인해야합니다.

답변

15

, C에 ProgramW6432 환경 변수가 가리키는 : \ 프로그램 파일.

  • 의 ProgramFiles => C : \ 프로그램 파일 (86)
  • 의 ProgramFiles (86) => C : 영어 버전의 Windows에서 32 비트 응용 프로그램에 대한 전체 목록은 \ 프로그램 파일 (86)
  • ProgramW6432 => C : \ 프로그램 파일
  • COMMONPROGRAMFILES => C : \ 프로그램 파일 (86) \ 공통 파일
  • COMMONPROGRAMFILES (86) => C : \ 프로그램 파일 (86) \ 공통 파일
  • CommonProgramW6432 => c : \ program files \ common 파일

잠시만 기다려주십시오 : 해당 폴더에는 32 비트 프로그램에 관심이 없어야합니다. 기술적으로. 파일 시스템 리다이렉터에주의하여 c : \ program 파일의 파일 요청을 c : \ program files (x86)로 리디렉션합니다. 실제로 해당 디렉토리에있는 파일에 액세스하려면 Wow64DisableWow64FsRedirection()을 사용해야합니다.

+0

필자는 필요한 (64 비트) 응용 프로그램이 이미 설치되어 있는지 확인하고 있습니다. – peterchen

-1
static string ProgramFilesx86() 
     { 
      if (8 == IntPtr.Size 
       || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")))) 
      { 
       return Environment.GetEnvironmentVariable("ProgramFiles(x86)"); 
      } 

      return Environment.GetEnvironmentVariable("ProgramFiles"); 
     } 

이게 필요한거야?

+0

확실히 C++처럼 보이지 않습니다. 어쩌면 C++/CLI하지만 나는 C#을 추측했을 것이다. –

+0

태그에서 C#을 봤다고 맹세 할 수있었습니다. 죄송합니다. –

5

퍼센트 CommonProgramW6432 % 64 비트 운영 체제에서

+0

감사합니다. 어떻게 든 나는 env 변수 목록에서 그 것을 놓쳤습니다. – peterchen

관련 문제