检查具有32位程序的64位Vista计算机上是否存在文件

时间:2010-01-05 15:12:17

标签: winapi vb6 windows-vista 64-bit environment-variables

所以,我有一个32位程序需要检查文件是否存在。但是,位置(可以来自快捷方式和注册表)通常使用环境字符串。我使用ExpandEnvironmentStrings api来扩展它们,然后检查文件是否存在。但是,因为它是32位应用程序(注意environmental strings emulation),所以在某些情况下路径会扩展到错误的位置。由于我不知道我给出的路径是32位还是64位,一个简单的解决方案是只使用64位位置和32位位置手动扩展相关的环境字符串(ProgramFiles和CommonProgramFiles)。然而,这感觉有点hacky。还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

或许File System Redirector会有所帮助。特别参见Wow64DisableWow64FsRedirection函数及其在那里描述的亲密朋友。

即便如此,您可能还需要进行一些检查以确定需要扩展哪些字符串以及是否需要32位或64位扩展。为此,我怀疑一个简单的字符串表将无济于事。正如你所说%ProgramFiles%在某些情况下可能意味着32位路径而在其他情况下意味着64位路径。