我在C中编写了一个应用程序,它使用FindFirstFile / FindNextFile Windows API以递归方式搜索从C:开始的目录。它成功遍历文件系统并查找并搜索所有子目录,但无法搜索“Program Files”目录。
我在这里缺少权限问题吗?我应该注意正在运行的应用程序是在SYSTEM帐户的上下文中,该帐户是具有访问“程序文件”权限的帐户。
还有其他人经历过这个吗?我已经做了很多寻找这个问题的答案,但到目前为止还没有发现这种行为的确切原因。
以下是我用于搜索目录的代码:
static void SearchDirectory(PCHAR pszDirectory)
{
CHAR szSearch[MAX_PATH] = {0};
CHAR szDirectory[MAX_PATH] = {0};
HANDLE hFind = NULL;
WIN32_FIND_DATAA FindFileData;
sprintf_s(szSearch, MAX_PATH, "%s%s", pszDirectory, "*");
hFind = FindFirstFileA(szSearch, &FindFileData);
if(hFind == INVALID_HANDLE_VALUE) return;
do {
// Do file processing here etc
if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY && strcmp(FindFileData.cFileName, ".") != 0
&& strcmp(FindFileData.cFileName, "..") != 0) {
sprintf_s(szDirectory, MAX_PATH, "%s%s\\", pszDirectory, FindFileData.cFileName);
SearchDirectory(szDirectory);
}
} while(FindNextFileA(hFind, &FindFileData));
FindClose(hFind);
}