Как найти нужную мне папку перебрав все файлы на компе на C#?
В классе DirectoryInfo есть метод GetDirectories() возвращает все вложенные папки и метод GetFiles() который возвращает все файлы из папки. У файла есть свойство Name в котором содержится имя и расширение файла. 

Пишете метод который ищет нужный файл в папке по имени. Если есть совпадение возвращаете его полный путь, если нет рекурсивно вызываете метод для всех подпапок.
по случаю )))
раз уж так совпало, дарю пример старого, возможно несколько сумбурного кода
... учитывайте что это расширение, а не метод.. да и вообще код сильно ориентирован на использование расшиений и функциональной парадигмыusing System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

namespace ff.links
{
    static partial class Program
    {
        static IEnumerable<string> scan(this IEnumerable<string> ds)
        {
            var files = new List<string>();
            foreach (var d in ds)
                try { files.add2my(d.here()).add2my(d.subdirs()); }
                catch (Exception e) { Console.WriteLine($"{pfx}Scan \"{d}\" - {e.Message}"); }
            return files;
        }
        static List<string> add2my(this List<string> l, IEnumerable<string> r) { l.AddRange(r); return l; }

        static IEnumerable<string> here(this string d) => Directory.EnumerateFiles(d).Where(f => f.isTarget());
        static IEnumerable<string> subdirs(this string d) => Directory.EnumerateDirectories(d).Where(p => !p.isIgnored()).scan();

        static void print(this string s, string pfx = "", string sfx = "") => Console.WriteLine(pfx + s + sfx);
        static void print(this IEnumerable<string> sa, string pfx = "", string sfx = "") => sa.ToList().ForEach(s => s.print(pfx, sfx));
        static bool isTarget(this string p) => targets.Contains(p.Split(backSlashDelimiter).Last());
        static string[] targets => new string[] { ffBinary, ffProfileSign, fflConfig };

        const string fflConfig = "ff.links.cfg.json";
        const string ffBinary = "firefox.exe";
        const string ffProfileSign = "compatibility.ini";
        const string skipd = ".default";

        static bool isIgnored(this string p) => ignored.Contains(p.Split(backSlashDelimiter, StringSplitOptions.RemoveEmptyEntries).Last());
        static string[] ignored => new string[]
        {
            "TorBrowser", "Microsoft", "MICROSOFT",  "WindowsApps",  "Windows", "WINDOWS",
            "ProgramData", "All Users", "Documents and Settings", //"Users",
            "My Documents", "My Pictures", "My Music", "My Videos", "Application Data",
            "Start Menu", "Local Settings", "Cookies", "NetHood", "PrintHood", "Recent", "SendTo", "Templates",
            "CrashReports", "WindowsImageBackup", "System Volume Information", "$Recycle.Bin", "$RECYCLE.BIN",
            "root", "Default User"
        };

        static char[] backSlashDelimiter = new char[] { backSlash };
        const char backSlash = '\\';

        static IEnumerable<string> fromRoot() => Environment.GetLogicalDrives().Where(p => !p.isIgnored());
        static IEnumerable<string> fromSysDrive() { yield return @"c:\"; }
        static IEnumerable<string> fromTypical()
        {
            var path = $@"{Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)}\Mozilla Firefox";
            yield return path;
            int p;
            if ((p=path.IndexOf(" (x86)")) >= 0)
                yield return path = path.Remove(p, 6);
            path = $@"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}\Mozilla\Firefox\Profiles";
            yield return path;
        }
    }
}ну и как ни крути, без примера использования ни куда..using System;
using System.Diagnostics;
using System.Linq;

namespace ff.links
{
    static partial class Program
    {
        static void Main(string[] args)
        {
            var sw = new Stopwatch();
            sw.Start();
            "let's begin...".print();

            var finds = fromTypical().scan();
            "found targets is ".print(pfx, finds.Count().ToString());
            //finds.print();
            var bro = finds.Where(b => b.Contains(ffBinary));
            "found browsers is ".print(pfx, bro.Count().ToString());
            bro.print(pfx);
            var cfg = finds.Where(b => b.Contains(fflConfig));
            "found configs is ".print(pfx, cfg.Count().ToString());
            cfg.print(pfx);
            var profiles = finds.Where(b => (b.Contains(ffProfileSign) && !b.Contains(skipd)));
            "found profiles is ".print(pfx, profiles.Count().ToString());
            //profiles.print();

            profiles.buildLinks(bro.First());
            //profiles.prefsApplay();

            //links2start();
            sw.Stop();
            var ts = sw.Elapsed;
            $"RunTime {ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds:000}".print();
//#if DEBUG
//            "press any key to continue...".print();
//            Console.ReadKey();
//#endif
        }
        const string pfx = "  ::> ";
    }
}пример поиска по всему диску C:var finds = @"C:\".scan();