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

64位和32位系统目录窗口

  •  1
  • Ziggy  · 技术社区  · 15 年前

    所以,我在64位系统(Windows7)上开发。 程序是32位应用程序。

    在32位目标平台上,我可以正常检查win32dll,因为SysWOW64目录不存在,没有问题。 位当它在64位系统上执行时,我可以检查win32目录,但sysWOW64目录总是指向system32目录。

    在64位系统上似乎有一种重定向。

    我试图使用“Wow64DisableWow64FsRedirection”,但在编译时出现“error C3861:'Wow64DisableWow64FsRedirection':identifier not found”。

    所以有两个问题:

    • 当程序运行时,如何确定当前是在32位还是64位系统上?
    3 回复  |  直到 11 年前
        1
  •  2
  •   msteiger    15 年前

    你不必搜索DLL。 LoadLibrary() LoadLibraryEx()将自动为您搜索所有相关文件夹。

    这个 search order 具体如下:

    1. 从中加载应用程序的目录。
    2. 系统目录。
    3. Windows目录
    4. 当前目录。
    5. PATH环境变量中列出的目录。

    如果确定要禁用重定向,可以使用前面提到的Wow64DisableWow64FsRedirection。为了让它“工作”,你必须设置

    #define _WIN32_WINNT 0x0501 (or higher)
    

        2
  •  0
  •   Jonathan    15 年前

    关于如何确定我目前是在32位还是64位系统上,我想你可以检查int指针的大小。。。

    int bits = IntPtr.Size * 8;
    Console.WriteLine( "{0}-bit", bits );
    
        3
  •  0
  •   JBirch    15 年前

    如果您知道只有这两个地方可以找到文件,那么可能会有点浪费,如果用户修改了它们,那么可能不会工作(尽管对于用户来说,一大堆其他东西也会坏掉),您可以简单地使用 %Path% 环境变量。

    推荐文章