У меня есть функция, которая в настоящее время захватывает все папки и подпапки, чтобы проверить ACL для небольшого инструмента, который я создаю, но я вытягиваю свои волосы пытаясь понять, как ограничить глубину, на которую он может пойти. Например, у вас есть папка, которая имеет 4 уровня глубины, но я хочу иметь возможность захватить только 3 уровня для ACL.Как ограничить глубину рекурсивного поиска подкаталогов
В настоящее время я его закодированы таким образом:
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);
}
}
Очевидно, что это не так хорошо, как это было, потому что я работал над проблемой на некоторое время, но если кто-нибудь может мне точку в правильном направлении Решите эту проблему, я был бы очень счастлив!
Что не работает для вас? Похоже, этот код не компилируется - где объявлен recCount (и pBar, и Depth)? и ваш (закомментированный) MessageBox.Show использует счетчик вместо этого. –