拦截windows打开文件

HyL*_*ian 16 c++ windows file-io events winapi

我正在尝试制作一个可以拦截文件打开过程的小程序.

目的是当用户双击给定文件夹中的文件时,窗口将通知软件,然后它处理该请求并返回窗口文件的数据.

也许会有另一种解决方案,比如监控Open消息并强制Windows在程序准备文件内容时等待.

该概念的一个应用可以是以透明的方式管理文件的解密,以便用户.在这种情况下,加密文件将在磁盘上,当用户打开它时(双击它或某些应用程序,如记事本),后台进程将拦截该打开事件,解密文件并提供内容该文件的请求应用程序.

这是一个有点奇怪的概念,它可能像"中间人"网络概念,但用文件而不是网络数据包.

谢谢阅读.

Luk*_*ane 13

您可以使用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"

每个进程都会运行,该进程与映像名称匹配,您的进程实际上将被调用为该进程的调试器,并将实际进程的路径作为参数.


Bri*_*ndy 11

从任何程序覆盖所有打开情况的最佳方法是通过文件系统筛选器驱动程序.这可能对您的需求来说太复杂了.


Len*_*ate 7

您可以使用代码注入和API重定向.您将启动目标进程,然后注入一个DLL,它挂钩您要拦截的Windows API函数.然后在目标进程认为它正在调用OpenFile()或其他任何东西时调用,然后在将调用传递给真实API之前就可以执行您喜欢的操作.

谷歌为"IAT挂钩".