Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

копировать занятый файл [D7, XP]


alex_3 ©   (2008-10-08 15:43:00) 

Подскажите как скопировать файл который занят программой?


Riply   (2008-10-08 18:34:00) [1]

> [8] Palladin ©   (08.10.08 17:19)
> давно хотел прочесть mdf'ы и ldf'ы во время работы mssql :)

Если, нужен рабочий код, то дайте мне время (и не очень мало :)).
(основная часть старых исходников уничтожена, а из новых трудно его выдернуть,
ибо слишком много собственнолапных ф-ий и структур используется :))
Один из вариантов уклонения от налогов.. тьфу !
Один из вариантов уклонения от открытия нашего объекта ! :
получаем LCN через вызов
NtQueryDirectoryFile(..., FileIdBothDirectoryInformation, ...) для его "родителя".
Т.е. нам нужен доступ к родителю, а не к объекту.
Имея на руках LCN, при помощи FSCTL_GET_NTFS_FILE_RECORD, получаем его FILE_RECORD.
Далее задача сводится к парсингу FILE_RECORD-а, с целью получения его RunArray.
А это совсем не разбор MFT и не так уж и страшно :)


Правильный$Вася   (2008-10-08 17:39:00) [2]


> Что из этого получится, если туда в этот момент идет запись,
>  - это другой вопрос :)

это-то как раз не вопрос
потому как кроме грязи, чичего там не будет
хотя в некоторых случаях это не помеха, но автору явно не это надо...


Palladin   (2008-10-08 17:19:00) [3]


> Riply ©   (08.10.08 17:08) [6]

(хором) прооосим! прооосим!

:)))
давно хотел прочесть mdf'ы и ldf'ы во время работы mssql :)


Riply   (2008-10-08 17:09:00) [4]

>  [6] Riply ©   (08.10.08 17:08)
P.S.
Что из этого получится, если туда в этот момент идет запись, - это другой вопрос :)


Riply   (2008-10-08 17:08:00) [5]

> [5] Правильный$Вася   (08.10.08 16:32)
> если файл открыт монопольно - никак

IMHO, слишком категоричное утверждение.
Ибо, это возможно, даже без мучений с MFT :)


Правильный$Вася   (2008-10-08 16:32:00) [6]


> как скопировать файл который занят программой?

если файл открыт монопольно - никак


Vlad Oshin   (2008-10-08 16:05:00) [7]


> а можно сделать копию в памяти, ни разу не открыв его?!
> я что, так отстал от жизни?

это не я написал - это путь к поиску


clickmaker   (2008-10-08 15:56:00) [8]

> [2] Vlad Oshin ©   (08.10.08 15:47)
> Данный способ никогда не открывает файл, а заместо этого создаёт копию его в памяти

а можно сделать копию в памяти, ни разу не открыв его?! я что, так отстал от жизни?


Vlad Oshin   (2008-10-08 15:47:00) [9]

http://delphiworld.narod.ru/base/read_from_opened_file.html


clickmaker   (2008-10-08 15:46:00) [10]

CreateFile(...,FILE_SHARE_READ or FILE_SHARE_WRITE,...)


Наверх

Титульная страница Поиск, карта сайта Написать письмо