Listando todos os arquivos no meu computador e classificando por tamanho

Recentemente eu cheguei no problema que meu disco rígido está ficando cheio, mas depois de passar por meus arquivos pessoais e apagar / mover todos os arquivos de vídeo grandes, eu ainda tenho uma pequena quantidade de ROM disponível. Então eu coloquei meu cérebro de programador para funcionar e decidi que em vez de passar meticulosamente por cada pasta e subpasta eu mesmo e usando o clique com o botão direito do mouse + propriedades do Windows para ver o tamanho de um arquivo e se vale a pena escreva um código simples que pesquise todos os arquivos no meu computador, coloque-os em uma lista pelo nome completo do caminho e coloque o tamanho do arquivo próximo a ele e, em seguida, classifique-o de maior a menor pelo tamanho do arquivo. Então eu pulei online, comecei a fazer a pesquisa, e foi quando tudo bateu no ventilador para mim. Eu encontrei trechos de código abundantes que funcionam para sua tarefa designada, mas sempre que eu tento utilizá-los eu me deparo com cargas de erros de compilação. Dito isso, a coisa mais promissora que encontrei até agora é:

const string dir = "C:\\";
string[] fns = Directory.GetFiles(dir);
var Sort = from fn in fns
           orderby new FileInfo(fn).Length descending
           select fn;
foreach (string n in Sort)
    Console.WriteLine(n);

Infelizmente isso não toca em nenhum subdiretório. Eu olhei como pegar os arquivos de subdiretórios, mas tentando integrar esses trechos de código com este provou mais problemas do que eu poderia ter imaginado. Nas raras ocasiões em que a luz era vista no fim do túnel, meu programa tocava em um diretório aparentemente protegido por privilégios de Administrador (eu sou o único usuário e, portanto, Administrador do meu computador) e jogava fora erros como um chimpanzé um zoológico joga fora as fezes.

Então, em geral, o que eu estou procurando ajuda é: -Programa que procura todos os arquivos no meu computador (estou assumindo que começando com a unidade "C: /" é onde eu posso acessar tudo) -Tira cada arquivo, seu tamanho , e o caminho para esse arquivo e joga-lo em uma lista / array / whatever -Sorts pelo tamanho do arquivo de maior para menos -Places esta lista em um arquivo .txt

A última parte eu realmente não preciso de ajuda, já que estou bastante familiarizado com a classe Streamwriter. Eu posso até mesmo filtrar por tamanho de arquivo com um algoritmo de análise quase-simples que eu posso fazer rapidamente se minha lista / array / etc de arquivos / caminhos / tamanhos estiverem em conformidade com os mesmos padrões e puderem ser convertidos em strings. Cerca de 90,23% dos meus problemas são simplesmente obter todos os arquivos, entrar ou ignorar e continuar as pastas protegidas pelo Admin (acho que ignorá-los seria melhor, pois duvido que algo em uma pasta protegida seja excluído.) Obtendo os caminhos e tamanhos de todos esses arquivos e organizando-os.

questionAnswers(3)

yourAnswerToTheQuestion