2010-01-05 6 views
2

그래서 파일이 있는지 확인해야하는 32 비트 프로그램이 있습니다. 그러나 위치 (바로 가기와 레지스트리 모두에서 올 수 있음)는 종종 환경 문자열을 사용합니다. ExpandEnvironmentStrings API를 사용하여 확장 한 다음 파일이 존재하는지 확인합니다. 그러나 32 비트 응용 프로그램 (참고 environmental strings emulation 참고)이기 때문에 경로가 잘못된 위치로 확장되는 경우가 있습니다. 주어진 경로가 32 비트인지 64 비트인지 모르기 때문에 간단한 솔루션은 64 비트 위치와 32 비트 위치를 모두 수동으로 사용하여 관련 환경 문자열 (ProgramFiles 및 CommonProgramFiles)을 확장하는 것입니다. 그러나 이것은 약간 해킹 된 느낌입니다. 더 좋은 방법이 있습니까?32 비트 프로그램이있는 64 비트 Vista 컴퓨터에 파일이 있는지 확인

+0

호기심 많은 사람들에게는 약간 해킹 된 방식으로 끝을 맺었습니다. 그의 문제는 내 상황에도 적용되는 다른 문제에 대해 이야기 한 이래 Bob에게 답을주었습니다. 환경 스트링 할당 때문이 아니라 파일 시스템 리디렉션 때문에 경로가 잘못 될 수도 있습니다. – Brian

답변

2

아마도 File System Redirector이 도움이 될 것입니다. 특히 Wow64DisableWow64FsRedirection 기능과 그 친한 친구가 설명되어 있습니다.

그럼에도 확장해야하는 문자열과 32 비트 또는 64 비트 확장을 결정하기 위해 어떤 검사를해야 할 필요가 있습니다. 이를 위해 간단한 문자열 표가 도움이되지 않는다고 생각합니다. 말하듯이 % ProgramFiles %는 어떤 경우에는 32 비트 경로를, 어떤 경우에는 64 비트 경로를 의미 할 수 있습니다.

+0

설명서에 아무 것도 없습니다 (본 것) 이 영향을받는 환경 문자열에 대해. 어쨌든 테스트했지만 작동하지 않았습니다. – Brian

+0

이 파일은 system32 디렉토리에있을 때 파일이 존재하는지 확인하는 데 유용합니다. "system"을 "sysnative" "존재를 확인할 때. – Brian