无法在64位计算机上使用getsystemdirectory()获得正确的路径

时间:2018-10-25 09:57:12

标签: c++ windows winapi

我有一个在64位操作系统(Windows 7)下运行的应用程序。我期望GetSystemDirectory返回“ C:\ Windows \ SysWOW64” 。而是返回“ C:\ Windows \ system32”

如何获取它返回“ C:\ Windows \ SysWOW64”

2 个答案:

答案 0 :(得分:1)

  

我期望GetSystemDirectory返回“ C:\ Windows \ SysWOW64” 。而是返回“ C:\ Windows \ system32”

应该如此,因为system32是官方系统文件夹,即使对于在64位Windows上运行的32位应用程序也是如此。在后一种情况下,WOW64仿真器会将32位应用尝试在system32中访问的所有文件静默重定向SysWOW64。您无需执行任何特殊的代码即可获得该行为。因此,无论您的应用是32位还是64位,都请继续使用system32

如果要具体获取SysWOW64文件夹的路径,请改用GetSystemWow64Directory()

答案 1 :(得分:-1)

#include <Windows.h>

int main(int argv, char* args[])
{
    TCHAR sysDir[MAX_PATH];
    GetSystemWow64Directory(sysDir, MAX_PATH);

    std::cout << sysDir << std::endl;

    return 0;
 }

输出:

C:\ Windows \ SysWOW64