Русское сообщество AutoIt

  • Май 20, 2012, 11:21:59 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:

Создан файловый архив для участников форума.

Закачивайте свои файлы и получайте рейтинг, прямые ссылки, и т.п.

Для изображений и скриншотов по прежнему есть AUTOIT.RV.UA

Реклама

Автор Тема: [Файловая система] Восстановление удаленного файла  (Прочитано 4777 раз)

0 Пользователей и 1 Гость смотрят эту тему.

gregaz [?]

  • AutoIt Гуру
  • *****
  • Репутация: 230
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 938
  • Версия AutoIt: 3.3.6.1
    • Награды
Как восстановить  удаленный в корзину файл ?




  Записан
Самая большая проблема – её сформулировать. 

TheBloodTear [?]

  • Новичок
  • *
  • Репутация: 7
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 36
  • Версия AutoIt: 3.3.0.0
    • Награды
Код: AutoIt [Выделить]
ShellExecute ("::{645FF040-5081-101B-9F08-00AA002F954E}")

Хммм.. Открывать то, открывается, а вот восстановить чтот кто его знает как:)..
« Последнее редактирование: Февраль 18, 2010, 09:49:08 от TheBloodTear »



  Записан
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел.

El Panda [?]

  • Глобальный модератор
  • *
  • **
  • Репутация: 43
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 102
  • Версия AutoIt: 3
    • Награды
Как вариант скопировать его обратно из папки RECYCLER нужного диска, вопрос только в том как определить конкретный файл.
Но вроде как там есть файл индексов...




  Записан
Партнерская программа для разработчиков ботов. Заработай на продаже своих программ!

gregaz [?]

  • AutoIt Гуру
  • *****

  • Автор темы
  • Репутация: 230
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 938
  • Версия AutoIt: 3.3.6.1
    • Награды
Как вариант скопировать его обратно из папки RECYCLER нужного диска, вопрос только в том как определить конкретный файл.
Но вроде как там есть файл индексов...
Похоже вопрос не так уж прост. Давно не могу найти решение.




  Записан

Medic84 [?]

  • Администратор
  • *
  • *****
  • Репутация: 161
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 942
  • Версия AutoIt: 3.3.6.1
    • WWW
    • Награды
Почему бы не просканировать все диски с папками RECYCLER на наличие данного файла?

P.S. Удалил файл, вручную проверил все диски, все файлы там одни и те же. Вот незадача только с выпуском системы. Если это XP, то создает папку D:\RECYCLER\S-1-5-21-842925246-1844823847-682003330-1003(например)
Если Win 7, то C:\$Recycle.Bin\S-1-5-21-4132900103-3613051719-553855155-1001(например)




  Записан
   
На форуме принято отмечать полезные сообщения кнопкой "Полезное сообщение"
Никогда не даю подробных примеров сразу, я сначала навожу на мысль - как можно написать. Учитесь мыслить сами, а не за других людей.
Моя лаборатория - программы, статьи и ответы на вопросы.

gregaz [?]

  • AutoIt Гуру
  • *****

  • Автор темы
  • Репутация: 230
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 938
  • Версия AutoIt: 3.3.6.1
    • Награды
Medic84  [?]
Цитата
Вот незадача только с выпуском системы. Если это XP, то создает папку
У меня Виста  :
C:\$Recycle.Bin\S-1-5-21-740529958-3378912036-438458945-1000
C:\$Recycle.Bin\S-1-5-21-51003140-4199384537-3980697693-500
Да и на других дисках тоже папки , на некоторых по 2
Внутри имена некоторых файлов закодирована
« Последнее редактирование: Февраль 18, 2010, 14:46:25 от gregaz »



  Записан

Guezt Gutsy [?]

  • Продвинутый
  • ***
  • Репутация: 75
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 333
  • Версия AutoIt: 3.3.6.1
    • Награды
Medic84  [?]
Цитата
Почему бы не просканировать все диски с папками RECYCLER на наличие данного файла?
Удаленные файлы имеют другое название, и пути восстановления с оригинальным названием файлов лежат в бинарном файле INFO2 ( это в ХР ) так, что не знаю, что это даст. ИМХО




  Записан

Yashied [?]

  • Глобальный модератор
  • AutoIt MVP
  • *
  • *****
  • Репутация: 1905
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 3967
  • Версия AutoIt: 3+
    • Награды
Первое, что приходит на ум, это работать непосредственно с окном корзины.

Код: AutoIt [Выделить]
#Include <Array.au3>
#Include <GUIListView.au3>

$Name = RegRead('HKCR\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}', '')
ShellExecute('::{645FF040-5081-101B-9F08-00AA002F954E}', '', '', '', @SW_HIDE)
If Not WinWait($Name, '', 3) Then
    MsgBox(16, 'Error', 'Error!')
    Exit
EndIf
$hWnd = WinGetHandle($Name)
$hList = ControlGetHandle($Name, '', 'SysListView321')
$Count = _GUICtrlListView_GetItemCount($hList)
Dim $Data[$Count + 1][2]
$Data[0][0] = 'Name'
$Data[0][1] = 'Original Location'
For $i = 1 To $Count
    For $j = 0 To 1
        $Data[$i][$j] = _GUICtrlListView_GetItemText($hList, $i - 1, $j)
    Next
Next
WinClose($hWnd)

_ArrayDisplay($Data)




  Записан
Думай, прежде чем говорить.

gregaz [?]

  • AutoIt Гуру
  • *****

  • Автор темы
  • Репутация: 230
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 938
  • Версия AutoIt: 3.3.6.1
    • Награды
Yashied  [?]
Цитата
Первое, что приходит на ум, это работать непосредственно с окном корзины.
Если нет других решений ,то можно
Но что дальше ? Неужели кликать по элементам  окна ?

Кроме того нужно учесть возможность присутствия одноименных файлов




  Записан

Yashied [?]

  • Глобальный модератор
  • AutoIt MVP
  • *
  • *****
  • Репутация: 1905
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 3967
  • Версия AutoIt: 3+
    • Награды
gregaz  [?]
Цитата
Но что дальше ? Неужели кликать по элементам  окна ?

Можно так:

Код: AutoIt [Выделить]
_GUICtrlListView_SetItemSelected($hList, $Index, 1, 1)
_SendMessage($hWnd, $WM_COMMAND, $ID_Restore, 0)

Т.е. выделяешь нужный файл ($Index), затем меню Restore ($ID_Restore). Значение $ID_Restore можно посмотреть в любом редакторе ресурсов (к сожалению нет под рукой) или в Google.
« Последнее редактирование: Февраль 18, 2010, 16:26:01 от Yashied »



  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Откапал в гугле примерно вот что:

Код: AutoIt [Выделить]
ConsoleWrite(_FileRecycleRestore(@DesktopDir, "~~Wiki.jpg"))

Func _FileRecycleRestore($sSourcePath, $sFileName)
    Local Const $RECYCLE_BIN = 10
    Local $objShell, $objFolder, $objFolderItem, $colItems
   
    $objShell = ObjCreate("Shell.Application")
    $objFolder = $objShell.Namespace($RECYCLE_BIN)
    $objFolderItem = $objFolder.Self
    $colItems = $objFolder.Items
   
    If IsObj($objShell) And Not @error Then
        For $objItem In $colItems
            $sName = $objFolder.GetDetailsOf($objItem, 0)
            $sSrcPath = $objFolder.GetDetailsOf($objItem, 1)
           
            If $sSrcPath = $sSourcePath And $sName = $sFileName Then
                $objFolderItem.InvokeVerbEx("Восстановить", $sSrcPath & "\" & $sName)
                Return FileCopy($objFolderItem.Path & "\" & $sName, $sSrcPath & "\" & $sName)
            EndIf
           
;~          $objFolder.GetDetailsOf($objItem, Number...)
;~          0 Name: dvdsig.md5
;~          1 Original Location: C:\VISTAG\D1
;~          2 Date Deleted: 3/20/2007 6:54 PM
;~          3 Size: 32 KB
;~          4 Type: MD5 File
;~          5 Date Modified: 3/20/2007 6:02 PM
;~          6 Date Created: 3/20/2007 5:59 PM
;~          7 Date Accessed: 3/20/2007 12:00 AM
;~          8 Attributes: A
;~          9 Status: Online
;~          10 Owner: Everyone
;~          11 Author:
;~          12 Title:
;~          13 Subject:
;~          14 Category:
;~          15 Pages:
;~          16 Comments:
;~          17 Copyright:
;~          18 Artist:
;~          19 Album Title:
;~          20 Year:
;~          21 Track Number:
;~          22 Genre:
;~          23 Duration:
;~          24 Bit Rate:
;~          25 Protected:
;~          26 Camera Model:
;~          27 Date Picture Taken:
;~          28 Dimensions:
;~          29 :
;~          30 :
;~          31 Episode Name:
;~          32 Program Description:
;~          33 :
        Next
    EndIf
   
    Return SetError(1, 0, -1)
EndFunc

но оно не работает, есть мысли на этот счёт? :whistle:




  Записан
Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.



«Не оказываю техподдержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

gregaz [?]

  • AutoIt Гуру
  • *****

  • Автор темы
  • Репутация: 230
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 938
  • Версия AutoIt: 3.3.6.1
    • Награды
Yashied  [?]
Цитата
Т.е. выделяешь нужный файл ($Index), затем меню Restore ($ID_Restore). Значение $ID_Restore можно посмотреть в любом редакторе ресурсов (к сожалению нет под рукой) или в Google.

А как определить нужный файл ( файл , который был только что удален) ?
Их там может быть несколько одного имени и удален был из одной папки.

Допустим даже я нашел и выполнил выделение второго (1) файла :
Код: AutoIt [Выделить]

Почему у меня не получается проверить выделение с помощью ?
Код: AutoIt [Выделить]
GUICtrlListView_GetSelectedIndices($hList)
 

А послать сообщение  :
Код: AutoIt [Выделить]
$ID_Restore=101
_SendMessage($hWnd, $WM_COMMAND, $ID_Restore, 0)
 
вообще не удается  ?

CreatoR  [?]
Цитата
но оно не работает, есть мысли на этот счёт?

У меня  нет













  Записан

Yashied [?]

  • Глобальный модератор
  • AutoIt MVP
  • *
  • *****
  • Репутация: 1905
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 3967
  • Версия AutoIt: 3+
    • Награды
gregaz

Цитата
А как определить нужный файл ( файл , который был только что удален)?

Цитата
Почему у меня не получается проверить выделение с помощью?

Код: AutoIt [Выделить]
#Include <Array.au3>
#Include <GUIListView.au3>

$Name = RegRead('HKCR\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}', '')
ShellExecute('::{645FF040-5081-101B-9F08-00AA002F954E}', '', '', '', @SW_HIDE)
If Not WinWait($Name, '', 3) Then
    MsgBox(16, 'Error', 'Error!')
    Exit
EndIf
$hWnd = WinGetHandle($Name)
$hList = ControlGetHandle($Name, '', 'SysListView321')
$Count = _GUICtrlListView_GetItemCount($hList)
Dim $Data[$Count + 1][3]
$Data[0][0] = 'Name'
$Data[0][1] = 'Original Location'
$Data[0][2] = 'Date Deleted'
For $i = 1 To $Count
    For $j = 0 To 2
        $Data[$i][$j] = _GUICtrlListView_GetItemText($hList, $i - 1, $j)
    Next
Next
_GUICtrlListView_SetItemSelected($hList, 1, 1, 1)
ConsoleWrite(_GUICtrlListView_GetSelectedIndices($hList) & @CR)
WinClose($hWnd)

_ArrayDisplay($Data)

Цитата
вообще не удается?

Значит ID не тот.




  Записан

gregaz [?]

  • AutoIt Гуру
  • *****

  • Автор темы
  • Репутация: 230
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 938
  • Версия AutoIt: 3.3.6.1
    • Награды
С      _GUICtrlListView_SetItemSelected($hList, 1, 1, 1)     разобрался .
Я пытался читать уже после :   WinClose($hWnd)
b]Yashied[/b]  [?]
Цитата
Значит ID не тот.

Просьба помочь найти правильный  $ID_Restore
« Последнее редактирование: Февраль 19, 2010, 18:18:21 от gregaz »



  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Yashied  [?]
Цитата
$Name = RegRead('HKCR\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}', '')
Это не везде будет работать, если пользователь сменил название у корзины, то заголовок будет другим. Есть ещё вот это:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}




  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
[Файловая система] Получение данных из цифровой подписи файла
AutoIt для новичков
D3m[66]n 0 954 Последний ответ Январь 26, 2010, 22:33:23
от D3m[66]n
[Файловая система] Корректный запуск файла
AutoIt для новичков
gregaz 4 1389 Последний ответ Февраль 05, 2010, 18:44:52
от gregaz
[Файловая система] Взять инфу из файла
AutoIt для новичков
modnik 5 1200 Последний ответ Март 06, 2010, 13:23:01
от gregaz
[Файловая система] Как корректно найти иконку файла ?
AutoIt для новичков
gregaz 43 3438 Последний ответ Январь 18, 2011, 16:49:35
от gregaz
[Файловая система] Переименование файла по шаблону
AutoIt для новичков
general66 14 1389 Последний ответ Май 02, 2011, 13:57:30
от general66
[Файловая система] Проверка на наличие строки, перемещение файла содержащего её
Стол заказов
SVD 14 1627 Последний ответ Май 16, 2011, 17:48:55
от Garrett
[Файловая система] Как записать байты в середину файла с помощью FileSetPos?
AutoIt для новичков
ohos 3 431 Последний ответ Сентябрь 05, 2011, 22:52:57
от Kaster
[Файловая система] Запуск файла с расширением .mac
AutoIt для новичков
alexnasnet 12 726 Последний ответ Ноябрь 07, 2011, 22:25:39
от Zaramot
[Файловая система] Копирование файла при запуске
Стол заказов
trudovik 7 637 Последний ответ Январь 10, 2012, 16:50:34
от Medic84
[Файловая система] получение имени файла для создания папки
AutoIt для новичков
Tosyk 2 255 Последний ответ Февраль 10, 2012, 18:13:00
от madmasles


Реклама

* Последние сообщения на форуме
post Проблема с циклами While
[AutoIt для новичков] Andeangl Сегодня в 11:03:15
post Уроки программирования и автоматизации посредством AutoIt для чайников
[AutoIt для новичков] aak Сегодня в 09:41:45
post Re: Как спарсить ссылку внутри тега "td" определенного класса
[Регулярные выражения и прочее] eropov Сегодня в 05:27:00
post Re: Ограничение доступа(блокировка) к компьютеру если не вставлен носитель с ключом
[AutoIt для новичков] Pat4005 Сегодня в 01:02:55
post Re: Развитие русской справки
[Инструменты и помощь по AutoIt] CreatoR Сегодня в 00:02:03
post Re: Развитие русской справки
[Инструменты и помощь по AutoIt] CreatoR Май 19, 2012, 23:55:37
post Узнать значение возвращаемое функцией javascript
[Автоматизация IE и Web-интерфейса] Viktor1703 Май 19, 2012, 23:25:05
post Re: Проверка запущенного процесса на удаленной машине
[AutoIt для новичков] sngr Май 19, 2012, 23:06:52
post Re: Проверка запущенного процесса на удаленной машине
[AutoIt для новичков] Dm666 Май 19, 2012, 22:38:13
post Re: Иконка AutoIt3 для разных Dock-ов
[Графика и творчество в рамках AutoIt] Ganibal95 Май 19, 2012, 22:21:35

* Пользователи онлайн
  • Dot Гостей: 75
  • Dot Скрыт: 0
  • Dot Пользователей: 19
  • Dot Пользователи Online: