Как удалить файлы из предварительной выборки или таких папок, для которых требуются административные разрешения, программно через C#

#c# #desktop-application

#c# #desktop-приложение

Вопрос:

Я создаю приложение Windows Form на C #, в котором будут перечислены все файлы, присутствующие в каталоге предварительной выборки, Temp и% temp% установки Windows, и, наконец, удалит их. Но я застрял в точке, где мое приложение не может обрабатывать исключение ниже. Пожалуйста, помогите мне предложить лучшее решение для достижения моей цели.

«Система.Исключение UnauthorizedAccessException: «Доступ к пути»C:WindowsPrefetch «в этом отказано».

Мой код для приложения Windows form приведен ниже

 using System;
using System.Windows.Forms;
using System.IO;

namespace ZAP_CLEANER
{
     public partial class UC_FullScan : UserControl
     {
         public UC_FullScan()
         {
           InitializeComponent();
         }

   
         private void ibtn_StartScan_Click(object sender, EventArgs e)
         {
            string rootPath = @"C:WindowsPrefetch";
            string[] dirs = Directory.GetDirectories(rootPath);
            var files = Directory.GetFiles(rootPath);
            foreach (string dir in dirs)
            {
                File.SetAttributes(dir, FileAttributes.Normal);
                textBox1.Text  = dir;
            }
           foreach (string file in files)
            {
                File.SetAttributes(file, FileAttributes.Normal);
                textBox1.Text  = file;
            }
      }

    public void DeleteDirectory(string targetDir)
    {
        File.SetAttributes(targetDir, FileAttributes.Normal);

        string[] files = Directory.GetFiles(targetDir);
        string[] dirs = Directory.GetDirectories(targetDir);

        foreach (string file in files)
        {
            File.SetAttributes(file, FileAttributes.Normal);
            File.Delete(file);
        }

        foreach (string dir in dirs)
        {
            DeleteDirectory(dir);
        }

        Directory.Delete(targetDir, false);
     }

     private void ibtn_Clean_Click(object sender, EventArgs e)
     {
        string rootPath = @"C:WindowsPrefetch";
        DeleteDirectory(rootPath);
     }
  }
}
 

Необработанное исключение

Комментарии:

1. Сообщение об ошибке означает именно то, что оно говорит. Вам отказано в доступе к этой папке по соображениям безопасности. Вы можете попробовать войти в систему как администратор.

2. Ну, на самом деле я вошел в систему как администратор.

3. Тогда, боюсь, вам не повезло. Похоже, что Microsoft резервирует эту папку исключительно для операционной системы.

4. Хорошо, однако мне интересно, как Ccleaner ( ccleaner.com/ccleaner/download ) или приложения такого типа реализуют то же самое.

5. Я действительно не знаю, как Windows обрабатывает пользователей-администраторов, но возможно ли, что вам нужно явно запускать свое приложение с правами администратора (даже если вы вошли в систему как администратор)?