Cómo limitar la profundidad de una búsqueda recursiva de subdirectorios

Tengo una función que actualmente toma todas las carpetas y subcarpetas para verificar las ACL de una pequeña herramienta que estoy construyendo, pero me estoy sacando el pelo tratando de descubrir cómo limitar la profundidad a la que puede llegar. Por ejemplo, tiene una carpeta que tiene 4 niveles de profundidad, pero quiero poder tomar solo 3 niveles para ACL.

Actualmente lo tengo codificado así:

private void StepThroughDirectories(string dir)
{
    string[] directories = Directory.GetDirectories(dir);
    try
    {
        foreach (string d in Directory.GetDirectories(dir))
        {
            if (recCount < (int)Depth)
            {
                GetACLs(d, new DirectoryInfo(d));
                pBar.Value += 1;
                //MessageBox.Show("Recursive Level: " + counter.ToString());
                recCount++;
                StepThroughDirectories(d);
            }
            else
            {
                recCount--;
            }
        }
    }
    catch (System.Exception e)
    {
        Console.WriteLine(e.Message);
    }
}

Obviamente, eso no es tan bueno como lo fue porque he estado trabajando en el problema durante un tiempo, pero si alguien puede señalarme en la dirección correcta para resolver este problema, ¡estaría muy feliz!

Respuestas a la pregunta(3)

Su respuesta a la pregunta