Перехват оконного файла

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

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

Возможно, будет другое решение, такое как мониторинг открытых сообщений и принудительное выполнение Windows, пока программа подготовит содержимое файла.

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

Это немного странная концепция, это может быть как концепция сети "Человек в центре", но с файлами вместо сетевых пакетов.

Спасибо за чтение.

Ответы

Ответ 1

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

Ответ 2

Вы можете использовать трюк, который Process Explorer использует для замены себя диспетчером задач. В основном создайте такой ключ:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe

Где вы заменяете 'taskmgr.exe' именем процесса для перехвата. Затем добавьте строковое значение 'Debugger', которое имеет путь к вашему исполняемому файлу. Например:

Debugger -> "C:\windows\system32\notepad.exe"

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

Ответ 3

Вы можете использовать переадресацию кода и перенаправление API. Вы должны начать свой целевой процесс, а затем ввести DLL, которая перехватывает функции API Windows, которые вы хотите перехватить. Затем вы вызываете, когда целевой процесс думает, что он вызывает OpenFile() или что-то еще, и вы можете делать то, что вам нравится, прежде чем передавать вызов реальному API.

Google для "подключения IAT".

Ответ 4

Windows имеет возможность шифровать файлы на диске (file- > properties- > advanced- > encrypt), и эта опция полностью прозрачна для приложений.

Возможно, чтобы зашифровать дешифрованные части файла диска, вы должны рассмотреть программное обеспечение, такое как criptainer?

Это программное обеспечение также http://www.truecrypt.org/downloads (бесплатный и открытый исходный код), но я не пробовал его.

Разработка настраиваемого решения звучит очень сложно.