Как читать данные, используя ReadFile, когда файл отключил обмен на чтение - PullRequest
1 голос
/ 26 сентября 2010

У меня проблема, у меня есть файл, который открыл другой процесс, и этот процесс определен в CreateFile не для общего доступа к файлам, тогда у меня есть другое приложение, и я хочу прочитать данные из этого файл одновременно, но как это сделать.

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

Кто-нибудь может мне помочь?

Ответы [ 3 ]

1 голос
/ 26 сентября 2010

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

Вы хотите позвонить BackupRead, и MSDN отмечает следующее:

резервная копия приложение должно иметь доступ к настройки контроля доступа на уровне системы, флаг ACCESS_SYSTEM_SECURITY должен быть указан в dwDesiredAccess значение параметра, переданное в CreateFile.value, переданное в CreateFile.

Значение параметра передано в CreateFile.

1 голос
/ 26 сентября 2010

Один из вариантов - использовать наш продукт RawDisk , который позволяет обойти ограничения безопасности системы и открыть файлы, которые были открыты исключительно или те, на которые у вас нет прав доступа. Обратите внимание, что для установки самого RawDisk требуются права администратора, поэтому RawDisk нельзя использовать для вторжения на чужой компьютер.

Другой вариант - использовать API резервного копирования, т.е. вышеупомянутую функцию Windows API BackupRead (). Выполнение поиска Google для BackupAPI даст вам не только описание этой функции, но и несколько комментариев от пользователей о том, что связано с использованием этого API резервного копирования

1 голос
/ 26 сентября 2010

Как насчет использования EasyHook и подключения API к процедуре CreateFile , по сути, ваш код перехватит API и, возможно, изменит параметр dwShareMode, чтобы сделать его FILE_SHARE_READ побитовый или FILE_SHARE_WRITE т.е. (FILE_SHARE_READ | FILE_SHARE_WRITE) и вызов исходной ловушки, чтобы позволить CreateFile нормально работать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...