Ответ 1
Лучший способ сделать это для всех случаев открытия из любой программы будет через фильтр файловой системы. Это может быть слишком сложным для ваших нужд.
Я пытаюсь создать небольшую программу, которая могла бы перехватить открытый процесс файла.
Цель заключается в том, когда пользователь дважды щелкает по файлу в данной папке, окна будут сообщать о программном обеспечении, а затем обрабатывают это ходатайство и возвращают окна данных файла.
Возможно, будет другое решение, такое как мониторинг открытых сообщений и принудительное выполнение Windows, пока программа подготовит содержимое файла.
Одним из применений этой концепции может быть управление десенсибилизацией файла прозрачным способом для пользователя. В этом контексте зашифрованный файл будет на диске, и когда пользователь откроет его (дважды щелкнув по нему или с помощью какого-либо приложения, такого как блокнот), фоновый процесс перехватит это событие open, дешифрует файл и предоставит содержимое этого файла в запрашивающем приложении.
Это немного странная концепция, это может быть как концепция сети "Человек в центре", но с файлами вместо сетевых пакетов.
Спасибо за чтение.
Лучший способ сделать это для всех случаев открытия из любой программы будет через фильтр файловой системы. Это может быть слишком сложным для ваших нужд.
Вы можете использовать трюк, который 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"
Каждый процесс запускается, который соответствует имени изображения, которое ваш процесс будет фактически вызываться в качестве отладчика для этого процесса, с указанием пути к фактическому процессу в качестве аргумента.
Вы можете использовать переадресацию кода и перенаправление API. Вы должны начать свой целевой процесс, а затем ввести DLL, которая перехватывает функции API Windows, которые вы хотите перехватить. Затем вы вызываете, когда целевой процесс думает, что он вызывает OpenFile() или что-то еще, и вы можете делать то, что вам нравится, прежде чем передавать вызов реальному API.
Google для "подключения IAT".
Windows имеет возможность шифровать файлы на диске (file- > properties- > advanced- > encrypt), и эта опция полностью прозрачна для приложений.
Возможно, чтобы зашифровать дешифрованные части файла диска, вы должны рассмотреть программное обеспечение, такое как criptainer?
Это программное обеспечение также http://www.truecrypt.org/downloads (бесплатный и открытый исходный код), но я не пробовал его.
Разработка настраиваемого решения звучит очень сложно.