小紅傘殺毒軟件自動化調用

這個東西自己沒什麼技術含量,啓動新進程 跟命令行同樣 幾句代碼的事 。說白了 仍是要靠殺毒軟件支持。好比你能夠在服務器上作一個自動化的 程序模塊  ,有用戶上傳文檔 就進行病毒檢測。如今的殺毒軟件均可以自動作到這些的 ,指定目錄下出現病毒文件會報的。殺毒軟件還能夠設定計劃任務 ,指定什麼時候掃描指定文件夾 ,能夠設定檢測到病毒後對文件的處理方式。其實這種需求自己是沒什麼太大必要的 ,坑爹啊 客戶是上帝啊。既然有需求咱們就要 給客戶實現。

好 不說了開始幹活了。先從網上下載個免費版的小紅傘 ,安裝好。個人是這個版本的:
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盤的病毒文件已經不見了。再看小紅傘的界面 原來已經被自動隔離了:

相關文章
相關標籤/搜索