C++ 无法在64位计算机中使用getsystemdirectory()获取正确的路径
我有一个在64位操作系统(Windows7)下运行的应用程序。我希望返回“C:\Windows\SysWOW64”。相反,它返回“C:\Windows\system32” 如何让它返回“C:\Windows\SysWOW64”?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
\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;
}