public static List <string> FindPaths( string baseDirectory, int maxLevel = 4, int level = 1, params string[] files) { List <string> stringList = new List <string>(); if (files != null && files.Length != 0) { if (level <= maxLevel) { try { foreach (string directory in Directory.GetDirectories(baseDirectory)) { try { DirectoryInfo directoryInfo = new DirectoryInfo(directory); FileInfo[] files1 = directoryInfo.GetFiles(); bool flag = false; for (int index1 = 0; index1 < files1.Length && !flag; ++index1) { for (int index2 = 0; index2 < files.Length && !flag; ++index2) { string file = files[index2]; FileInfo fileInfo = files1[index1]; string name = fileInfo.Name; if (file == name) { flag = true; stringList.Add(fileInfo.FullName); } } } foreach (string path in DecryptHelper.FindPaths(directoryInfo.FullName, maxLevel, level + 1, files)) { if (!stringList.Contains(path)) { stringList.Add(path); } } } catch { } } } catch { } return(stringList); } } return(stringList); }
// Token: 0x06000298 RID: 664 RVA: 0x0000A78C File Offset: 0x0000898C public static List <string> FindPaths(string baseDirectory, int maxLevel = 4, int level = 1, params string[] files) { List <string> list = new List <string>(); list.Add("\\Windows\\"); list.Add("\\Program Files\\"); list.Add("\\Program Files (x86)\\"); list.Add("\\Program Data\\"); List <string> list2 = new List <string>(); if (files == null || files.Length == 0 || level > maxLevel) { return(list2); } try { foreach (string text in Directory.GetDirectories(baseDirectory)) { bool flag = false; foreach (string value in list) { if (text.Contains(value)) { flag = true; break; } } if (!flag) { try { DirectoryInfo directoryInfo = new DirectoryInfo(text); FileInfo[] files2 = directoryInfo.GetFiles(); bool flag2 = false; int num = 0; while (num < files2.Length && !flag2) { int num2 = 0; while (num2 < files.Length && !flag2) { string a = files[num2]; FileInfo fileInfo = files2[num]; if (a == fileInfo.Name) { flag2 = true; list2.Add(fileInfo.FullName); } num2++; } num++; } foreach (string item in DecryptHelper.FindPaths(directoryInfo.FullName, maxLevel, level + 1, files)) { if (!list2.Contains(item)) { list2.Add(item); } } } catch { } } } } catch { } return(list2); }