通过将Windows传递给我的程序,让Windows“打开”所有的东西

我正在为一个学校项目编写自己的反病毒软件。 我有一些基本知识,比如检查一个文件的MD5哈希值与已知坏哈希库的比较,检查文件是否有已知错误的字节模式,检查是否尝试连接到networking。通过传递文件的path来检查作为我的程序的参数。

我想要做的是更像真正的反病毒/恶意软件的作品,通过检查用户双击每个文件的方式。

IE:双击Explorer中的TEST.exe,而不是直接启动TEST.exe,我希望操作系统用TEST.exe的path实际调用ANTIVIRUS.exe。 ANTIVIRUS.exe然后将检查TEST.exe并确定是否安全启动或不。

我想修改registry中的“打开方式”属性,但我注意到你不能设置打开一个可执行文件的程序。

我怎么能改变Windows(XP,7,8)设置做这样的事情(如果可能的话?)。 如果不能这样做,其他反病毒如何在启动时检查文件?

Solutions Collecting From Web of "通过将Windows传递给我的程序,让Windows“打开”所有的东西"

你所说的“打开”真的是ShellExecute 。 这不是真正的AV使用,因为ShellExecute最终调用CreateProcess 。 但有更多的方法来调用CreateProcess ,也许最重要的是它可以直接调用。

@wmz有另一个合理的(但是很复杂的)提示:你可以检查文件系统驱动程序级别。 这不是一个普通的程序,而是作为内核的一部分运行。 这使编程变得困难,例如所有的.Net语言都是不可用的。