這個東西自己沒什麼技術含量,啓動新進程 跟命令行同樣 幾句代碼的事 。說白了 仍是要靠殺毒軟件支持。好比你能夠在服務器上作一個自動化的 程序模塊 ,有用戶上傳文檔 就進行病毒檢測。如今的殺毒軟件均可以自動作到這些的 ,指定目錄下出現病毒文件會報的。殺毒軟件還能夠設定計劃任務 ,指定什麼時候掃描指定文件夾 ,能夠設定檢測到病毒後對文件的處理方式。其實這種需求自己是沒什麼太大必要的 ,坑爹啊 客戶是上帝啊。既然有需求咱們就要 給客戶實現。
好 不說了開始幹活了。先從網上下載個免費版的小紅傘 ,安裝好。個人是這個版本的: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盤的病毒文件已經不見了。再看小紅傘的界面 原來已經被自動隔離了: