Вот есть код такой у меня. Суть его: при открытии программы все файлы на диске должны скрываться, при введении пароля - отрываться. Но. Если прописать путь, например, 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");
}
}
}
TubeKinder, это потому что ты через цикл пытаешься получить список всех папок и атрибуты
а в корне диска есть системные папки, а которые из под винды не попасть, исключи из списка системные папки
# Koenig (15.11.2016 / 18:27)
TubeKinder, это потому что ты через цикл пытаешься получить список всех папок и атрибуты
а в корне диска есть системные папки, а которые из под винды не попасть, исключи из списка системные папки
Спасибо за совет, попробую так ещё сделать..
Koenig, Но.. Если ввести нужный формат для поиска файлов, например *.mp3, то все равно не работает же... мп3 не есть системными файлами..
TubeKinder, у тебя поиск по всем папкам корня, а в корне есть папки не доступные для чтения
allfiles в нем есть косячные элементы
сейчас погуглю
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, Спасибо большое, попробую так!) Я искал в гугле, но не нашёл нужного.. Наверное из-за того, что я не знал что искать.. Точнее не понимал что мне нужно найти, совсем недавно только начал изучать с#)
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
Не, все равно та же ошибка