环境:windows 10 64位;
在MFC中调用PathIsDirectory时,返回false,GetLastError() 为2,无法找到目标,但"C:\\Windows\\System32\\oobe\\info"确实存在的。

原因:
64位的windows对system32做了重定向。以下是网络资料(http://www.jb51.net/os/windows/339151.html):
====================================参考资料=============================

其实%WINDIR%\SysNative文件夹是不存在的,它只是64位Windows系统提供的一种重定向机制。

我们已经知道64位Windows通过System32和SysWoW64两件文件夹来区分64位和32位的系统文件,当32位的应用程序尝试访问System32文件夹的时候,系统会自动把它转到SysWoW64文件夹,这样32位应用程序在32位系统和64位系统就都可以运行了,(而不需要为了64位系统而把System32改成SysWoW64)。

这样就出现了一个问题,32位的应用程序怎么访问真正的System32文件夹呢,即存放64位系统文件的文件夹?答案就是通过SysNative文件夹。这个文件夹并不存在,即在资源管理器中找不到,但当32位的应用程序尝试访问这个文件夹时,64位的Windows会把它重定向到真正的System32文件夹,从而提供了一种让32位应用程序访问64位系统文件的方法。具体细节请参考MSDN。
====================================End====================================

解决:
判断系统是32位或64位;
64位采用"C:\\Windows\\SysNative\\oobe\\info"
32位采用"C:\\Windows\\System32\\oobe\\info"


09-06 01:33