Я работаю над кодом с целью удаления дубликатов файлов в любом месте, где ему разрешено. Я уже пробовал несколько вещей, но он не удаляет дубликаты файлов, к которым у меня был бы другой доступ.
Я также пытался добавить это
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Я тоже пробовал это
File.SetAttributes(path, FileAttributes.Normal);
Но это мне больше не помогло
Как мне от этого избавиться? И возможно ли удалить дубликаты файлов везде, где есть разрешение на вашем P C? Потому что теперь код выполняется, но я получаю исключение, когда дубликаты файлов не удаляются.
Это мой код
try
{
string path;
ConsoleKeyInfo cki;
double totalSize = 0;
path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
DirectoryInfo directoryInfo = new DirectoryInfo(path);
File.SetAttributes(path, FileAttributes.Normal);
var fileList = directoryInfo.EnumerateFiles("*", SearchOption.AllDirectories).ToList();
int totalFiles = fileList.Count;
List<FileDetails> finalDetails = new List<FileDetails>();
List<string> ToDelete = new List<string>();
finalDetails.Clear();
{
{
for (int i = 0; i < fileList.Count; i++)
{
{
string item = fileList[i].FullName;
using (var fs = new FileStream(item, FileMode.Open, FileAccess.Read))
{
finalDetails.Add(new FileDetails()
{
FileName = item,
FileHash = BitConverter.ToString(SHA1.Create().ComputeHash(fs)),
});
}
}
}
}
var similarList = finalDetails.GroupBy(f => f.FileHash)
.Select(g => new { FileHash = g.Key, Files = g.Select(z => z.FileName).ToList() });
ToDelete.AddRange(similarList.SelectMany(f => f.Files.Skip(1)).ToList());
if (ToDelete.Count > 0)
{
Console.WriteLine("Files being deleted- ");
for (int i = 0; i < ToDelete.Count; i++)
{
string item = ToDelete[i];
Console.WriteLine(item);
FileInfo fi = new FileInfo(item);
totalSize += fi.Length;
}
}
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Total space made free- {0}mb", Math.Round((totalSize / 1000000), 6).ToString());
{
ToDelete.ForEach(File.Delete);
}
}
}
catch (System.UnauthorizedAccessException)
{
}
catch (Exception ex)
{
}