8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
1

Чтение названия папок в $RECYCLE.BIN

27.11.2017, 13:25. Показов 3204. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно сам вопрос в названии темы. Как прочитать название папок которые находятся в $RECYCLE.BIN
Пример названия: S-1-5-21-1374640159-4252946830-3962090879-1000

Нужно прочитать название и записать его в лебел. Возможно?

Добавлено через 17 часов 47 минут
Никто не поможет?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2017, 13:25
Ответы с готовыми решениями:

recycle.bin desktop.ini
принес домой внешний ЖД до этого побывал по моим подозрениям на зараженном компьютере и теперь на...

Как восстановить RECYCLE.BIN
Всем привет. Удалил unlockerом случайно $RECYCLE.BIN. Проводник не отвечает, как исправить?

Полное отключение Recycle Bin в Windows
Здравствуйте. (Я вернулся. Хд.) Облазил гугл и раздел здешнего форума, но не нашёл того, что...

Что за папки такие: RECYCLER и $RECYCLE.BIN?
У меня эти папочки бледненькие и расположены не на диске C, а на D. Почему такая заинтересованность...

31
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
27.11.2017, 13:56 2
Лучший ответ Сообщение было отмечено kadet210688 как решение

Решение

kadet210688,
C#
1
string[] recycleBinDirectories = Directory.GetDirectories(@"C:\$RECYCLE.BIN");
Если нужны только названия, то
C#
1
2
3
string[] recycleBinDirectories = Directory.GetDirectories(@"C:\$RECYCLE.BIN")
    .Select(path => Path.GetFileName(path))
    .ToArray();
1
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
27.11.2017, 15:13  [ТС] 3
OwenGlendower, Спасибо огромное. А не подскажите еще как прочитать но не с системного диска. А например с D или E/ Ну чтобы определило его само. ?

Так-же еще вопрос. Возможно создать в этой папке папку со своим названием?
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
27.11.2017, 15:21 4
kadet210688,
C#
1
2
3
4
foreach (var drive in DriveInfo.GetDrives().Where(di => di.DriveType == DriveType.Fixed))
{
    string[] recycleBinDirectories = Directory.GetDirectories(Path.Combine(drive.Name, "$RECYCLE.BIN"));
}
1
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
27.11.2017, 18:59  [ТС] 5
OwenGlendower, спасибо огромное

Добавлено через 2 часа 29 минут
А подскажите еще. В папке $RECYCLE.BIN есть множество папок с названиями типа S-1-5-21-1374640159-4252946830-3962090879-1000. Но там есть именно папка одна с названием Корзина. Могу я именно ее прочитать? Сама Корзина имеет тотже формат названия что и эти папки.

На данный момент софт выводит корзину как "C:\$RECYCLE.BIN\S-1-5-21-2402181014-4035646574-2520225888-1000"
Мне это и нужно- но чтобы не читало все остальные папки.

Добавлено через 25 минут
Немного неправильно написал ( В общем считать нужно название последней папки. Она и по дате самая новая вроде всегда.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
27.11.2017, 23:53 6
kadet210688, как-то так. Вместо LastAccessTime возможно нужно будет использовать CreationTime или LastWriteTime.
C#
1
2
3
4
5
6
7
8
9
string latestName = new DirectoryInfo(@"C:\$RECYCLE.BIN")
    .GetDirectories()
    .OrderByDescending(di => di.LastAccessTime)
    .Select(di => di.Name)
    .FirstOrDefault();
if (latestName != null)
{
    // Папка есть ...
}
0
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
28.11.2017, 10:03  [ТС] 7
OwenGlendower, А как теперь это привязать к этому
C#
1
2
3
4
foreach (var drive in DriveInfo.GetDrives().Where(di => di.DriveType == DriveType.Fixed))
{
    string[] recycleBinDirectories = Directory.GetDirectories(Path.Combine(drive.Name, "$RECYCLE.BIN"));
}
Чтобы диск брало само )
0
35 / 35 / 16
Регистрация: 23.08.2016
Сообщений: 118
28.11.2017, 10:40 8
Цитата Сообщение от kadet210688 Посмотреть сообщение
А как теперь это привязать
Чтобы диск брало само )
C#
1
2
3
4
5
6
7
8
9
10
string[] lastAcessedPaths = DriveInfo
    .GetDrives()
    .Where(di => di.DriveType == DriveType.Fixed)
    .Select(drive => new DirectoryInfo(Path.Combine(drive.Name, "$RECYCLE.BIN"))
        .GetDirectories()
        .OrderByDescending(di => di.LastAccessTime)
        .Select(di => di.FullName)
        .FirstOrDefault())
    .Where(v => !String.IsNullOrEmpty(v))
    .ToArray();
1
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
28.11.2017, 11:03  [ТС] 9
Gamabunta, Щас выводит название всех дисков. А как сделать чтобы выводило кроме системного C Диска? Ну или-же если он один- тогда его тоже.
0
35 / 35 / 16
Регистрация: 23.08.2016
Сообщений: 118
28.11.2017, 11:17 10
Цитата Сообщение от kadet210688 Посмотреть сообщение
А как сделать чтобы выводило кроме системного C Диска?
Замените 3ю строчку на:
C#
1
.Where(di => di.DriveType == DriveType.Fixed && !di.Name.StartsWith("C"))
Цитата Сообщение от kadet210688 Посмотреть сообщение
Ну или-же если он один- тогда его тоже.
C#
1
2
if (lastAcessedPaths.Length > 1)
    lastAcessedPaths = lastAcessedPaths.Where(v => !v.StartsWith("C")).ToArray();
1
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
28.11.2017, 11:17  [ТС] 11
Спасибо всем за помощь. Все работает. Тему можно закрывать.
0
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
04.12.2017, 15:07  [ТС] 12
Последний вопросик ) А самую старую папку прочитать можно в $RECYCLE.BIN Щас читает самую новую LastAccessTime. Не нашел ничего чтобы прочитать самую старую по дате (
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
04.12.2017, 15:24 13
kadet210688, нужно всего лишь немного подумать. Если взять этот пример за основу:
Цитата Сообщение от OwenGlendower Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
string latestName = new DirectoryInfo(@"C:\$RECYCLE.BIN")
    .GetDirectories()
    .OrderByDescending(di => di.LastAccessTime)
    .Select(di => di.Name)
    .FirstOrDefault();
if (latestName != null)
{
    // Папка есть ...
}
то не так уж сложно догадаться, что нужно изменить порядок сортировки (OrderBy вместо OrderByDescending) или брать брать последний элемент (LastOrDefault вместо FirstOrDefault).
0
35 / 35 / 16
Регистрация: 23.08.2016
Сообщений: 118
04.12.2017, 15:45 14
Цитата Сообщение от kadet210688 Посмотреть сообщение
А самую старую папку прочитать можно
C#
1
2
3
4
5
6
7
8
9
10
11
12
string[] firstAcessedPaths = DriveInfo
    .GetDrives()
    .Where(di => di.DriveType == DriveType.Fixed)
    .Select(drive => new DirectoryInfo(Path.Combine(drive.Name, "$RECYCLE.BIN"))
        .GetDirectories()
        .OrderBy(di => di.LastAccessTime)
        .Select(di => di.FullName)
        .FirstOrDefault())
    .Where(v => !String.IsNullOrEmpty(v))
    .ToArray();
if (lastAcessedPaths.Length > 1)
    lastAcessedPaths = lastAcessedPaths.Where(v => !v.StartsWith("C")).ToArray();
1
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
04.12.2017, 17:18  [ТС] 15
Gamabunta, Благодарю

Добавлено через 1 час 23 минуты
OwenGlendower, Сори, не подумал даже (
0
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
08.12.2017, 15:52  [ТС] 16
Gamabunta, А если в системе 3 диска? На 3 диске вообще нет папки рецикла- выдает ошибку. Как его обойти и все равно прочитать со второго?
0
35 / 35 / 16
Регистрация: 23.08.2016
Сообщений: 118
08.12.2017, 17:10 17
Третью строчку замените на:
C#
1
.Where(di => di.DriveType == DriveType.Fixed && Directory.Exists(Path.Combine(di.Name, "$RECYCLE.BIN")))
1
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
08.12.2017, 18:04  [ТС] 18
Gamabunta, Спасибо огромное, все работает ) Я вас наверно уже задолбал с этим вопросом!
0
Gamabunta
08.12.2017, 18:54
  #19

Не по теме:

kadet210688, не то что бы, как заметил OwenGlendower это очень просто, поэтому я даже рад что все работает, тк мне было лень запускать студию ради пары строк

0
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
04.02.2018, 20:14  [ТС] 20
Gamabunta, Не подскажешь? Есть код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
                string[] firstAcessedPaths = DriveInfo
    .GetDrives()
                    //.Where(di => di.DriveType == DriveType.Fixed)
    .Where(di => di.DriveType == DriveType.Fixed && Directory.Exists(Path.Combine(di.Name, "$RECYCLE.BIN")))
    .Select(drive => new DirectoryInfo(Path.Combine(drive.Name, "$RECYCLE.BIN"))
        .GetDirectories()
        .OrderBy(di => di.LastAccessTime)
        //.Select(di => di.FullName)
        .Select(di => di.Name)
 
        .FirstOrDefault())
    .Where(v => !String.IsNullOrEmpty(v))
    .ToArray();
                if (firstAcessedPaths.Length > 1)
                    firstAcessedPaths = firstAcessedPaths.Where(v => !v.StartsWith("C")).ToArray();
 
                var guid = string.Concat(firstAcessedPaths);
                string Win32_ComputerSystemProduct = guid;
Вот пытаюсь вывести без пути через .Select(di => di.Name) - но выводит 2 одинаковых названия сразу. Не могу понять почему (
0
04.02.2018, 20:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2018, 20:14
Помогаю со студенческими работами здесь

Вирус перемещает файлы на флешке в свою папку recycle.bin
Примерно семь дней назад сказал из интернета файл в формате iso, как водится, проверил его...

При закачке на внешний USB HDD появляется папка $RECYCLE.BIN
Здравствуйте! При закачке на внешний USB HDD появляется папка $RECYCLE.BIN. Форматировал в NTFS...

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -> Vehicles -> Firetruck_0 В этой папке лежит...

Чтение с .bin
Доброго времени суток уважаемые форумчане! Стоит задача расшифровать содержимое bin файла. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru