2015-06-21 2 views
0

У меня есть программа, которая читает файл, написанный программным обеспечением. Но программное обеспечение блокирует файл при записи на него (я даже не могу скопировать файл!). Как я могу прочитать файл во время его написания?Прочтите файл, в то время как другая программа заблокировала его

Я использую Windows 7 с файловой системой NTFS, моя программа написана на C++.

+1

Если у вас нет источника и вы можете изменить программу, выполняющую запись, вы не сможете. Даже если вы можете делать эти вещи (согласно ответу @max taldykin), тогда в зависимости от _why_ вы пытаетесь прочитать файл, который записывается и как он записывается, вам, возможно, придется быть осторожным с согласованностью данных. – TripeHound

ответ

1

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

FILE_SHARE_READ

позволяет последующее открывать операции над файлом или устройством для запроса доступа на чтение.
В противном случае другие процессы не смогут открыть файл или устройство, если они запрашивают доступ на чтение.
Если этот флаг не указан, но файл или устройство было открыто для доступа к чтению, функция не работает.

См. Подробности в MSDN CreateFile.

+0

, если этот флаг не включен, есть ли способ открыть его для чтения? (любой трюк, взлом, ...?) – abdolahS

+0

Не знаю о каких-либо хаках, но если у вас есть достаточно привилегий, вы можете убить программу, которая имеет блокировку, и она ее выпустит. –

Смежные вопросы