Если вы не можете использовать .NET и управляемый код, вы можете пройти через Win32 API
Вот пример , который вы можете изменить, чтобы получить только папки.
(в основном следующая проверка:)
...
TCHAR szDir = _T("c:\\"); // or wherever.
HANDLE hFind = FindFirstFile(szDir, &ffd);
...
do {
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
// your code on 'ffd'
}
} while (FindNextFile(hFind, &ffd) != 0);