这个东西自己没什么技术含量,启动新进程 跟命令行同样 几句代码的事 。说白了 仍是要靠杀毒软件支持。好比你能够在服务器上作一个自动化的 程序模块 ,有用户上传文档 就进行病毒检测。如今的杀毒软件均可以自动作到这些的 ,指定目录下出现病毒文件会报的。杀毒软件还能够设定计划任务 ,指定什么时候扫描指定文件夹 ,能够设定检测到病毒后对文件的处理方式。其实这种需求自己是没什么太大必要的 ,坑爹啊 客户是上帝啊。既然有需求咱们就要 给客户实现。
好 不说了开始干活了。先从网上下载个免费版的小红伞 ,安装好。个人是这个版本的:c#
转到个人安装目录 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文件 随便均可以 随意。测试
而后 运行命令行以下:ui
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"spa
这只是个普通图片文件 事实检测此妹纸是无毒的:命令行
而后运行命令 参数设定为扫描有病毒的文件:
C:\Program Files (x86)\Avira\AntiVir Desktop>avscan /CFG="d:\myavp.avp" /PATH="d:\lpk.dll"
结果:线程
注意在win7下 有可能会出现提示“要容许如下程序对计算机进行更新吗” 这个请自行设置 管理员权限。debug
咱们想要的是不让他弹出界面,把上面的 配置 第一个项改为GuiMode=0 ,而后再运行命令行 ,结果是 界面是没了 可是命令行里 却什么结果也不返回 。运行命令 而后就完了 空空如也 这个我也不知道怎么回事 先无论。 新建一个winform程序 写一段以下c#函数:code
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盘的病毒文件已经不见了。再看小红伞的界面 原来已经被自动隔离了: