我有一个相当简单的程序,可以计算文件的 CRC32。它适用于几乎所有文件,但 System32 文件夹中的某些文件无法访问。
- 该程序是用 C++ 编写的。
- 我遇到问题的文件是使用 fHandle = ::FindFirstFileEx(m_szPathname, FindExInfoStandard, &fData, FindExSearchNameMatch, NULL, FIND_FIRST_EX_CASE_SENSITIVE); 找到的。
- 当使用 FindFirstFile 时,未找到这些文件。
- 仅对于那些文件,CreateFile才返回错误,并且GetLastError指示该文件不存在。HANDLE fHandle = CreateFile(szPathname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- 当我执行 ShellExecute 以使用 cmd.exe 来 DIR 或 COPY 此类文件时,我得到的结果与我从“开始”菜单启动的 shell 执行完全相同的操作时得到的结果不同。具体来说,这些文件再次找不到。
这其中必定有某种魔法,但我还没有在网上找到任何资料来说明这种魔法是什么。