use CFileFind class for example:#include <afx.h>
#include <iostream>using namespace std;void Recurse(LPCTSTR pstr)
{
   CFileFind finder;   // build a string with wildcards
   CString strWildcard(pstr);
   strWildcard += _T("\\*.*");   // start working for files
   BOOL bWorking = finder.FindFile(strWildcard);   while (bWorking)
   {
      bWorking = finder.FindNextFile();      // skip . and .. files; otherwise, we'd
      // recur infinitely!      if (finder.IsDots())
         continue;      // if it's a directory, recursively search it      if (finder.IsDirectory())
      {
         CString str = finder.GetFilePath();
         cout << (LPCTSTR) str << endl;
         Recurse(str);
      }
   }   finder.Close();
}void main()
{
   if (!AfxWinInit(GetModuleHandle(NULL), NULL, GetCommandLine(), 0)
      cout << "panic!" << endl;
   else
      Recurse(_T("C:"));
}i think it can help you !