Я бы следовал шагам, аналогичным @jstarek, но я бы бросил второй.
Получите полный путь к папке b, извлеките папку b из пути, перечислите каталоги по этому пути и исключите папку b из полученного набора.
Если вы хотите получить информацию, более специфичную для языка программирования, укажите, какой язык вы используете. Вы упомянули WinForms, так что я предполагаю, что это будет .Net? Если это так, в .Net Framework уже есть классы, предназначенные для выполнения этой задачи.
EDIT:
Если вы используете .Net, взгляните на класс DirectoryInfo. У него есть метод GetDirectories, который позволяет очень легко перечислять каталоги под данным каталогом. Он также имеет перегрузки для поиска и т. Д.
Когда я использовал это в прошлом, исключения могут генерироваться, если у пользователя, запускающего программу, нет разрешений для рассматриваемой папки.
Вот ссылка на образец метода DirectoryInfo GetDirectory: http://msdn.microsoft.com/en-us/library/s7xk2b58.aspx#Y798