C# help me, please

1.39K
.
TubeKinder
Вот есть код такой у меня. Суть его: при открытии программы все файлы на диске должны скрываться, при введении пароля - отрываться. Но. Если прописать путь, например, D:\temp - программа работает. Если сделать так, как я хочу - D:\ - она не компилируется... выдаёт ошибку, что нельзя получить какой-то доступ к D:// System Volume // что-то в этом роде.. Почему так? Как можно это обойти? Мне нужно скрыть именно на всём диске файлы, а не на отдельной папке... То есть, во всех папках, подпапках и тд...
public partial class MainWindow : Window
    {
        public MainWindow()
        {
            string[] allfiles = Directory.GetFiles(@"D:\", "*.*", SearchOption.AllDirectories);
            foreach (string file in allfiles)
            {
                File.SetAttributes(file, FileAttributes.Hidden | FileAttributes.System);

            }
            InitializeComponent();
        }
        private void pass(bool delattr)
        {
            if (delattr)
            {
                string[] allfiles2 = Directory.GetFiles(@"D:\", "*.*", SearchOption.AllDirectories);
                foreach (string file2 in allfiles2)
                {
                    FileAttributes attributes = File.GetAttributes(file2);
                    File.SetAttributes(file2, attributes & ~FileAttributes.System);
                    File.SetAttributes(file2, attributes & ~FileAttributes.Hidden);
                }
                
            }
            else
            {

                MessageBox.Show("Error!");
            }
            password.Password = "";
        }

        void button1_Click(object sender, RoutedEventArgs e)
        {
            pass(password.Password == "12345");
        }

        
    }
}
.
(\/)____o_O____(\/)
TubeKinder, это потому что ты через цикл пытаешься получить список всех папок и атрибуты
а в корне диска есть системные папки, а которые из под винды не попасть, исключи из списка системные папки
.
# Koenig (15.11.2016 / 18:27)
TubeKinder, это потому что ты через цикл пытаешься получить список всех папок и атрибуты
а в корне диска есть системные папки, а которые из под винды не попасть, исключи из списка системные папки
Спасибо за совет, попробую так ещё сделать..
.
Koenig, Но.. Если ввести нужный формат для поиска файлов, например *.mp3, то все равно не работает же... мп3 не есть системными файлами..
.
(\/)____o_O____(\/)
TubeKinder, у тебя поиск по всем папкам корня, а в корне есть папки не доступные для чтения
allfiles в нем есть косячные элементы
сейчас погуглю
.
(\/)____o_O____(\/)
string[] allfiles = Directory.GetFiles(@"D:\", "*.*", SearchOption.AllDirectories);
foreach (string file in allfiles)
{
If(file != @"D:\System Volume Information") {               
File.SetAttributes(file, FileAttributes.Hidden | FileAttributes.System);
}
}


как то так
.
Koenig, Спасибо большое, попробую так!) Я искал в гугле, но не нашёл нужного.. Наверное из-за того, что я не знал что искать.. Точнее не понимал что мне нужно найти, совсем недавно только начал изучать с#)
.
(\/)____o_O____(\/)
TubeKinder, ну моя строка запроса была примерно такая
c# discard list directories system volume information
.
# Koenig (15.11.2016 / 20:25)
TubeKinder, ну моя строка запроса была примерно такая
[url=https://www.google.ru/webhp?sourceid=chrome-instant&rlz=1C1GKLB_enRU698RU698&ion=1&espv=2&ie=UTF-8#q=c%23%20discard%20list%20directories%20
А я искал с# как исключить системные папки ничего не нашёл... Ну как, того, что я хотел не нашёл))
.
# Koenig (15.11.2016 / 19:46)
string[] allfiles = Directory.GetFiles(@"D:\", "*.*", SearchOption.AllDirectories);
foreach (string file in allfiles)
{
If(file != @"D:\System Volume Information") {
File.SetAttribu
Не, все равно та же ошибка
Всего: 22