在这种情况下,实现Windows文件系统Minifilter驱动程序是否合适?

时间:2017-09-19 18:08:47

标签: windows minifilter

我正在为以下情况寻找更好的解决方案:

我们使用第三方Windows应用程序,在启动时从磁盘上的特殊位置读取一组初始化文件。根据用例需要不同的设置,到目前为止,我们已经通过在启动应用程序之前使用脚本将正确的文件复制到settings文件夹中来实现。我们在批量构建系统中运行应用程序,但其预期用途是使用其GUI交互使用。设置文件是从源代码存储库中提取的。

复制文件似乎不是一种干净的方式,我非常想提出一个解决方案,允许我将应用程序直接重定向到正确的设置目录。阅读完这个主题之后,我相信一个微过滤器和一个用户空间应用程序控制哪些设置可能最有可能解决问题。

为了让自己清楚,给出以下目录:

(a)C:\ Repos \ Project1 \ Settings

(b)C:\ Repos \ Project2 \ Settings

(c)C:\ Repos \ Common \ Settings

(d)C:\ Program Files \ Application \ Settings

我想从一个已知的申请中隐藏(d)(如果有的话)的内容,并将其替换为((a)和(c))或((b)和(c)的内容的组合) 。我建议这样做的方法是通过重定向文件系统Minifilter驱动程序和用户空间应用程序来传达有关要处理的目录的信息。

*在我的案例中,实施文件系统Minifilter驱动程序是否可行?

1 个答案:

答案 0 :(得分:1)

正式地说,文件系统(Mini)过滤器驱动程序是唯一可行的方法。但要注意编写任何类型的Windows驱动程序都有一个陡峭的学习曲线。查看与您的用例密切匹配的Microsoft SimRep FS过滤器驱动程序示例。如果您之前没有Windows驱动程序开发经验,我不建议采用这种方式。

更可行的解决方案是进入应用程序地址空间并拦截CreateFile调用。然后,您可以在用户空间代码中更改文件名。谷歌为IAT挂钩注射'研究这种方法。存在使库成为一项相当简单的任务的库。例如,请查看EasyHook