小红伞杀毒软件自动化调用

这个东西本身没什么技术含量,启动新进程 跟命令行一样 几句代码的事 。说白了 还是要靠杀毒软件支持。比如你可以在服务器上做一个自动化的 程序模块  ,有用户上传文档 就进行病毒检测。现在的杀毒软件都可以自动做到这些的 ,指定目录下出现病毒文件会报的。杀毒软件还可以设定计划任务 ,指定何时扫描指定文件夹 ,可以设定检测到病毒后对文件的处理方式。其实这种需求本身是没什么太大必要的 ,坑爹啊 客户是上帝啊。既然有需求我们就要 给客户实现。

好 不说了开始干活了。先从网上下载个免费版的小红伞 ,安装好。我的是这个版本的:

转到我的安装目录 C:\Program Files (x86)\Avira\AntiVir Desktop  看到这个了噻: avscan.exe  ,我们就调用它。通过命令调用avscan需要一个配置文件 ,我们在d盘新建一个文本文件 更名为myavp.avp  内容为:

[CFG]
GuiMode=1
ExitMode=1
[SEARCH]
Parameter=0x00300432
[CONTROLCENTER]
ProfileName=myscan

然后把文件属性设为只读 ,要不然 调用后 小红伞会删除此配置文件。别问我什么意思 ,我也不知道什么意思 ,小红伞安装目录也有很多的avp文件 。不过可以确定一点 guimode=1 意思是控制是否弹出界面 ,哇哈哈    ,别砸我。为了测试成功与否我们得找个病毒文件,擦 我哪去找病毒文件啊 ,最终我还是找了个 ,当前比较流行 时尚的lpk.dll 。如假包换这绝对是一个病毒文件 我朋友传给我的压缩包里的。然后再随便找个图片文件  th.jpg  其他随便什么exe文件  随便都可以 随意。

然后 运行命令行如下:

D:\>cd C:\Program Files (x86)\Avira\AntiVir Desktop
C:\Program Files (x86)\Avira\AntiVir Desktop>avscan /CFG="d:\myavp.avp" /PATH="d:\th.jpg"

这只是个普通图片文件 事实检测此妹纸是无毒的:

然后运行命令 参数设定为扫描有病毒的文件:
C:\Program Files (x86)\Avira\AntiVir Desktop>avscan /CFG="d:\myavp.avp" /PATH="d:\lpk.dll"
结果:

注意在win7下 有可能会出现提示“要允许以下程序对计算机进行更新吗” 这个请自行设置 管理员权限。

我们想要的是不让他弹出界面,把上面的 配置 第一个项改成GuiMode=0  ,然后再运行命令行 ,结果是 界面是没了 但是命令行里 却什么结果也不返回 。运行命令 然后就完了 空空如也  这个我也不知道怎么回事 先不管。 新建一个winform程序 写一段如下c#函数:

 1 void invokeAntivirus(string executeFileFullName,string args,string docFullName)
 2 {
 3     Process proc =null;
 4     proc = new System.Diagnostics.Process();
 5     proc.StartInfo.FileName = executeFileFullName;
 6     proc.StartInfo.Arguments = string.Format(args, docFullName);
 7     proc.Start();
 8     proc.WaitForExit(); //等待
 9 
10     if (proc.ExitCode == 0)
11         MessageBox.Show("没病毒啦啦啦");
12     else
13         MessageBox.Show("注意,有情况");
14 }

然后在按钮的click事件里调用:

1 string exe = @"C:\Program Files (x86)\Avira\AntiVir Desktop\avscan.exe";
2 string args = "/CFG=\"d:\\myavp.avp\" /PATH=\"{0}\"";
3 string docFile = textBox1.Text;
4 invokeAntivirus(exe, args, docFile);

最后运行下我们编译后在debug目录的程序 ,一定要鼠标右键 以管理员方式运行。
在文本框填写d:\th.jpg

在文本框填写:d:\lpk.dll

当你点击按钮后界面会死几秒钟 才有反应 ,因为要等扫描进程结束。如果你想解决此情况不让界面死掉 那么最简单的方式 放到另一个线程里执行就可以了。proc.ExitCode != 0 的那些代码是什么意思其实我也不明白 ,反正等于0的是正常文件 。反正功能实现了就行了 坑啊。注意需扫描的文件名或者路径填错了 并不报错 而是proc.ExitCode==0 。并且扫描结束后发现d盘的病毒文件已经不见了。再看小红伞的界面 原来已经被自动隔离了:

posted @ 2014-12-12 15:26  assassinx  阅读(2897)  评论(0编辑  收藏  举报