我正在试图制作一个可以拦截文件的打开过程的小程序。
目的是当用户双击给定文件夹中的文件时,Windows会通知软件,然后处理该请求并返回窗口文件的数据。
也许会有另一种解决scheme,如监视打开消息,强制Windows等待程序准备文件的内容。
这个概念的一个应用,可能是以一种透明的方式pipe理文件的解密encryption。 在这种情况下,encryption的文件将在磁盘上,当用户打开它(双击它或使用某些应用程序如记事本)时,后台进程将拦截该打开的事件,对文件进行解密并给出内容的文件到提问应用程序。
这是一个有点奇怪的概念,它可能像“中间人”的networking概念,但与文件,而不是networking包。
谢谢阅读。
最好的办法来覆盖从任何程序打开的所有情况将通过文件系统过滤器驱动程序 。 这可能太复杂,但您的需求。
您可以使用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来挂钩你想要拦截的windows API函数。 当目标进程认为它正在调用OpenFile()或其他任何东西,然后在将调用传递给真正的API之前,你可以做你喜欢的事情。
谷歌为“IAT挂钩”。
Windows有一个选项来加密磁盘上的文件(文件 – >属性 – >高级 – >加密),这个选项对应用程序是完全透明的。
也许要加密磁盘的解密文件部分,你应该考虑像criptainer软件?
有这个软件以及http://www.truecrypt.org/downloads (自由和开源),但我没有尝试过。
开发定制解决方案听起来非常困难。