代码之家  ›  专栏  ›  技术社区  ›  Brian

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

  •  2
  • Brian  · 技术社区  · 15 年前

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

    1 回复  |  直到 15 年前
        1
  •  2
  •   Bob77    15 年前

    也许 File System Redirector 会有帮助的。具体请参见ww64disablew64fsredirection函数及其在此处描述的好友。

    即使如此,您可能需要进行一些检查,以确定需要扩展哪些字符串,以及是否需要32位或64位扩展。为此,我怀疑一个简单的字符串表是没有帮助的。正如您所说,在某些情况下%programfiles%可能意味着32位路径,而在其他情况下则意味着64位路径。