Копирование файлов, занятых иным процессом
От: _strannik_  
Дата: 05.09.05 14:06
Оценка:
Всем привет!
Ситуация следующая: существует файл "C:\\WINDOWS\\system32\\config\\software.log". Я произвожу его копирование с помощью функции CopyFileEx.
Код:
CopyFileExA(existingFile, newFile, NULL, NULL, FALSE, COPY_RESTARTABLE),
в результате возниает ошибка: ERROR_ACCESS_DENIED

Выводится сообщение: "Процесс к файлу не может получить доступ так как, файл занят другим процессом".

Может быть есть другая функция для работы с залоченными файлами или эту функцию нужно использовать иначе.
(Есть вриант использовать функции ReadFile & WriteFile, но он не желателен )

Заранее всем спасибо.
Re: Копирование файлов, занятых иным процессом
От: MShura  
Дата: 05.09.05 17:18
Оценка:
__>Всем привет!
__>Ситуация следующая: существует файл "C:\\WINDOWS\\system32\\config\\software.log". Я произвожу его копирование с помощью функции CopyFileEx.
__>Код:
__>CopyFileExA(existingFile, newFile, NULL, NULL, FALSE, COPY_RESTARTABLE),
__>в результате возниает ошибка: ERROR_ACCESS_DENIED

__>Выводится сообщение: "Процесс к файлу не может получить доступ так как, файл занят другим процессом".


__>Может быть есть другая функция для работы с залоченными файлами или эту функцию нужно использовать иначе.

__>(Есть вриант использовать функции ReadFile & WriteFile, но он не желателен )
А как ты думаешь работает CopyFileExA? (Ответ: через ReadFile & WriteFile)

IMHO:
Можно получить handle этого файла в свой процесс, запросить местоположение файла на диске и читать из нужного места прямо с диска.
Только ведь не зря тебе не дают читать документированными функциями. Ведь прочитав указанным мной способом, содержимое прочитанных данных, может быть совершенно не таким, которое ты ожидаешь.
Re: Копирование файлов, занятых иным процессом
От: MShura  
Дата: 05.09.05 19:20
Оценка:
__>Ситуация следующая: существует файл "C:\\WINDOWS\\system32\\config\\software.log". Я произвожу его копирование с помощью функции CopyFileEx.
__>Код:
__>CopyFileExA(existingFile, newFile, NULL, NULL, FALSE, COPY_RESTARTABLE),
__>в результате возниает ошибка: ERROR_ACCESS_DENIED

Кстати можно попробовать через ReadFile/WriteFile, только при вызове CreateFile не забыть указать FILE_FLAG_BACKUP_SEMANTICS.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.