我已经用C编写了一个应用程序,它使用FindFirstFile / FindNextFile Windows APIrecursionsearch从C:开始的目录。 它成功地遍历文件系统并查找和search所有子目录,但无法search“Program Files”目录。
有没有我在这里失踪的权限问题? 我应该注意到正在运行的应用程序在SYSTEM帐户的上下文中,该帐户是具有访问“程序文件”权限的帐户。
有没有人经历过这个? 我已经完成了很多关于这个问题的答案,但到目前为止还没有发现这种行为的确定性原因。
这里是我用来search目录的代码:
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); }