我看到了有关检测系统架构的非传统方法的讨论,因此我在运行于64位Windows上的32位exe中使用了此代码:
HMODULE ntdll = GetModuleHandleA("ntdll.dll");
char path[MAX_PATH];
GetModuleFileNameA(ntdll, path, MAX_PATH);
cout << "ntdll path : " << path << endl;
我希望在SysWow64中获取ntdll的路径,但输出为:
kenel32 path : C:\Windows\SYSTEM32\ntdll.dll
那为什么呢? AFAIK在64个Windows上运行的32个应用程序会从syswow64而非system32导入系统dll