FindFirstFile / FindNextFile递归搜索未找到“程序文件”

时间:2011-11-16 16:22:11

标签: c windows winapi

我在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);
}

0 个答案:

没有答案