C++ 无法在64位计算机中使用getsystemdirectory()获取正确的路径

C++ 无法在64位计算机中使用getsystemdirectory()获取正确的路径,c++,windows,winapi,C++,Windows,Winapi,我有一个在64位操作系统(Windows7)下运行的应用程序。我希望返回“C:\Windows\SysWOW64”。相反,它返回“C:\Windows\system32” 如何让它返回“C:\Windows\SysWOW64”?\include int main(int argv,char*args[]) { TCHAR sysDir[MAX_PATH]; GetSystemWOW64目录(sysDir,MAX_路径); std::cout#包括 int main(int argv,char*a

我有一个在64位操作系统(Windows7)下运行的应用程序。我希望返回“C:\Windows\SysWOW64”。相反,它返回“C:\Windows\system32”

如何让它返回“C:\Windows\SysWOW64”?

\include
int main(int argv,char*args[])
{
TCHAR sysDir[MAX_PATH];
GetSystemWOW64目录(sysDir,MAX_路径);
std::cout
#包括
int main(int argv,char*args[])
{
TCHAR sysDir[MAX_PATH];
GetSystemWOW64目录(sysDir,MAX_路径);
标准::cout
我希望
GetSystemDirectory
返回“C:\Windows\SysWOW64”。相反,它返回“C:\Windows\system32”

应该是这样的,因为
system32
是正式的系统文件夹,即使对于运行在64位Windows上的32位应用程序也是如此。在后一种情况下,32位应用程序试图在
system32
中访问的任何文件都会被WOW64模拟器自动重定向到
SysWOW64
。您不需要在c中执行任何特殊操作所以无论你的应用是32位还是64位,都要继续使用
system32

如果您特别想获取
SysWOW64
文件夹的路径,请使用
getsystemwow64目录()

我希望
GetSystemDirectory
返回“C:\Windows\SysWOW64”。相反,它返回“C:\Windows\system32”

应该是这样的,因为
system32
是正式的系统文件夹,即使对于运行在64位Windows上的32位应用程序也是如此。在后一种情况下,32位应用程序试图在
system32
中访问的任何文件都会被WOW64模拟器自动重定向到
SysWOW64
。您不需要在c中执行任何特殊操作所以无论你的应用是32位还是64位,都要继续使用
system32


如果您特别想获取
SysWOW64
文件夹的路径,请使用
getsystemwow64目录()

没有问题。“C:\Windows\system32”是64位系统目录的物理路径!相反,“C:\Windows\SysWOW64”是模拟的“system32”的物理路径32位应用程序的目录。我知道,这听起来很混乱,只需向上阅读以确认。没有问题。“C:\Windows\system32”是64位系统目录的物理路径!相反,“C:\Windows\SysWOW64”是模拟的“system32”的物理路径32位应用程序的目录。我知道,这听起来很混乱,请阅读确认。@Jabberwocky首先需要讨论何时调用此函数。例如,它将在32位操作系统上失败。此外,没有错误检查。它也很弱,因为它使用
TCHAR
而不是
wchar\t
。虽然显然
GetSystemWOW64目录
是一个好答案的一部分,但这个答案的质量很低。@Jabberwocky首先需要讨论一下何时调用这个函数。例如,它在32位操作系统上会失败。此外,没有错误检查。它使用
TCHAR
r也很弱除了
wchar\u t
。虽然
getsystemwow64目录
显然是一个好答案的一部分,但这个答案的质量很低。
#include <Windows.h>

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

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

    return 0;
 }