Вот отправная точка, она будет рекурсивно вызывать диск C: и вычислять размер каждой папки. Возможно, вы захотите изменить его в соответствии с вашими потребностями, например, вместо словаря, просто сохраните самый большой.
Func<DirectoryInfo, long> calc = null;
var sizes = new Dictionary<string, long>();
calc = di =>
{
var childSum = di.GetDirectories().Sum(d => calc(d));
var size = di.GetFiles().Sum(f => f.Length);
sizes.Add(di.FullName, childSum + size);
return size;
};
calc(new DirectoryInfo("C:\\"));
EDIT :
По словам Ганса, вы можете захотеть запустить программу с повышенными правами для отслеживания в каталогах, к которым у вас нет доступа, например, в разделе «Сведения о томе системы».