当前位置:编程学习 > C#/ASP.NET >>

文件上傳並觸發掃毒引擎的問題

各位有写过上传文件或文档后,触发扫毒引擎对文件进行扫描,并把结果回车页面的程序吗? --------------------编程问答-------------------- 就好像163郵箱裡收MAIL後,會對郵件進行掃毒
有這樣的經驗嗎 --------------------编程问答-------------------- 怎麼樣啊,高手呢 --------------------编程问答-------------------- 怎麼沒有人回答呢?沒分也不至於這樣吧 --------------------编程问答-------------------- js可以出发exe文件的. --------------------编程问答-------------------- 謝謝,我看一下
回復的人真的是少啊 --------------------编程问答-------------------- mark --------------------编程问答-------------------- ? --------------------编程问答-------------------- mark --------------------编程问答-------------------- 應該會有人做過差不多的功能吧,請問有誰知道嗎?
--------------------编程问答-------------------- 帮顶!!!!!!!!!!!!!!!! --------------------编程问答-------------------- 我現在使用的是卡巴斯基殺毒軟件 ,請問在我上傳完文件並保存在服務器的硬盤下,再調用一個Virus.aspx的網頁進行對剛上傳完的文件進行查殺,並將結果告訴用戶。要怎麼做呢?

急啊。。。。。。。。。。 --------------------编程问答-------------------- 怎麼老是沒有人回復呢?高手呢? --------------------编程问答-------------------- 你是不是得和毒软件公司,要接口或技术吧. --------------------编程问答-------------------- 我觉得你可能要和杀毒软件公司要接口或技术吧. --------------------编程问答-------------------- 卡巴斯基沒有這個嗎?
在它的安裝目錄下:kavshell.exe這個文件好像可以運行
我在命令行運行KAVSHELL SCAN c:\downloads\test.exe /L:objects2scan.txt /WA:scan.log這個是可以的

但是當我將它寫在aspx.cs檔裡卻報錯說路徑錯誤。。
我在aspx.cs裡是這樣寫的:
public class Virus : System.Web.UI.Page
{
public void OpenWithArguments()
{
  Process.Start("C:\\Program Files\\Kaspersky Lab\\Kaspersky Anti-Virus for File Servers 5\\kavshell.exe scan","d:\\wi\\smem_enu.pdf" );
}
private void Page_Load(object sender, System.EventArgs e)
{
OpenWithArguments();
}

如果沒有加參數就可以運行,但是不加參數就掃描不了我想要的文件啊 --------------------编程问答-------------------- 幫忙頂一下, --------------------编程问答-------------------- 不能沉下去啊 --------------------编程问答-------------------- 關注中... --------------------编程问答-------------------- 怎麼這麼久都沒有人 回復呢?難道高手們都不在了
--------------------编程问答-------------------- 这里高手本来就少,还没时间天天来看帖,来看帖吧不一定就能看到你的,直接要微软或杀毒厂家提供技术支持好了.友情帮顶! --------------------编程问答-------------------- 这个不用你操心,你系统里的杀毒软件会自动扫描一切文件的改动.只要作了设置的话. --------------------编程问答-------------------- 帮忙顶一下 --------------------编程问答-------------------- 卡巴斯基沒有這個嗎? 
在它的安裝目錄下:kavshell.exe這個文件好像可以運行 
我在命令行運行KAVSHELL   SCAN   c:\downloads\test.exe   /L:objects2scan.txt   /WA:scan.log這個是可以的 

但是當我將它寫在aspx.cs檔裡卻報錯說路徑錯誤。。 
我在aspx.cs裡是這樣寫的: 
public   class   Virus   :   System.Web.UI.Page 

public   void   OpenWithArguments() 

    Process.Start( "C:\\Program   Files\\Kaspersky   Lab\\Kaspersky   Anti-Virus   for   File   Servers   5\\kavshell.exe   scan ", "d:\\wi\\smem_enu.pdf "   ); 

private   void   Page_Load(object   sender,   System.EventArgs   e) 

OpenWithArguments(); 


如果沒有加參數就可以運行,但是不加參數就掃描不了我想要的文件啊
-------------------------------------------------------
參數加的不對.
Process.Start("C:\\Program Files\\KasperskyLab\\KasperskyAnti-VirusforFileServers5\\kavshell.exe", "scan \"d:\\wi\\smem_enu.pdf\""); --------------------编程问答-------------------- 然后可以使用

            Process p = Process.GetProcessesByName("kavshell.exe");
            if (p.MainWindowTitle == "")//顯示沒有病毒,只能取到標題,如果標題不變,就沒辦法
            {
                //加上自己的代易做图
            }

這段代易做图放進Timer或者線程,循環檢查窗體標題,直到查毒完成
PS:沒有能夠過卡巴,具體自己看著辦 --------------------编程问答-------------------- Process.Start( "C:\\Program   Files\\KasperskyLab\\KasperskyAnti-VirusforFileServers5\\kavshell.exe ",   "scan   \ "d:\\wi\\smem_enu.pdf\ " ");

我運行了這句,並放在Page_load裡面,運行完後,我怎麼知道他有沒有針對這個文件進行殺毒?

然后可以使用 

C# code
            Process p = Process.GetProcessesByName("kavshell.exe");
            if (p.MainWindowTitle == "")//顯示沒有病毒,只能取到標題,如果標題不變,就沒辦法
            {
                //加上自己的代易做图
            }


這段代易做图放進Timer或者線程,循環檢查窗體標題,直到查毒完成 

這個是怎麼用的?就你可以幫我了............. --------------------编程问答--------------------  Process[] p = Process.GetProcessesByName( "kavshell.exe "); 
這是找出kavshell.exe這個進程
p[0].MainWindowTitle是kavshell.exe的主窗體標題
PS:之前寫錯,GetProcessesByName返回的是數組,你自然是循環檢查窗體標題,直到標題顯示殺毒完成,沒有病毒,就可以用p[0].Kill()把他結束掉
但是,標題上不提示殺毒狀態我也就沒辦法了 --------------------编程问答-------------------- Process.Start("C:\\Program Files\\Kaspersky Lab\\Kaspersky Anti-Virus for File Servers 5\\kavshell.exe","scan \"d:\\software\" ");
Process[] p = Process.GetProcessesByName("kavshell.exe");
if (p[0].MainWindowTitle == "")
{
Response.Write("No Virus!!");
}


我可不可以這樣寫啊 --------------------编程问答-------------------- 如果我運行完這個Process.Start( "C:\\Program   Files\\Kaspersky   Lab\\Kaspersky   Anti-Virus   for   File   Servers   5\\kavshell.exe ", "scan   \ "d:\\software\ "   "); 
,沒有病毒就跟用戶顯示說沒有病毒並已經將文件上傳完了
如果有病毒就提示用戶說你上傳的文件有病毒,已經刪除文件了
要怎麼做?
發了這麼久,就你可以幫到我............不勝感激啊 --------------------编程问答-------------------- 0分=白顶 --------------------编程问答-------------------- 因為我沒有分數了,搞這個案子用了不少分 --------------------编程问答-------------------- ? --------------------编程问答-------------------- 我運行了在進程裡看到kavshell.exe這個進程一閃就過去了,
不管我上傳了多大的文件
是不是它只是運行哪個kavshell.exe,卻沒有對文件進行查 --------------------编程问答-------------------- 死也要頂起來 --------------------编程问答-------------------- 我運行了在進程裡看到kavshell.exe這個進程一閃就過去了, 
不管我上傳了多大的文件 
是不是它只是運行哪個kavshell.exe,卻沒有對文件進行查
-----------------------------------------------
沒用過卡巴不清楚,這個方法要解決問題完全看殺毒軟件,實在不行也只有找卡巴要文檔 --------------------编程问答-------------------- 我的代易做图就是這樣的:
private void Upload_Click(object sender, System.EventArgs e)
{
string filename = this.FILE1.PostedFile.FileName;
filename = filename.Substring(filename.LastIndexOf("\\"));
this.FILE1.PostedFile.SaveAs("d:\\mb\\" + filename);
              
Response.Write("<script>parent.pb.UploadComplete();parent.ClearTimer();</script>"); 
            virus();

}

private void virus()
{
//Create the ProccessInfo object
string sTemp=this.FILE1.Value;
string sFileName=sTemp.Substring(sTemp.LastIndexOf("\\")).Replace("\\","");

ProcessStartInfo psi = new ProcessStartInfo("C:\\Program Files\\Kaspersky Lab\\Kaspersky Anti-Virus for File Servers 5\\kavshell.exe","scan \"d:\\mb\\sFileName\"  /FA /DISINFECT");

psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardInput = true;
psi.RedirectStandardError = true;
psi.WorkingDirectory = "d:";

//Start the Process
System.Diagnostics.Process proc = System.Diagnostics.Process.Start(psi);

//Attach the output for reading
System.IO.StreamReader sOut = proc.StandardOutput;
//Attach the in for writing 
System.IO.StreamWriter sIn = proc.StandardInput;

//Exit CMD.EXE
string stEchoFmt = "#{0}run successfully.Exiting";

sIn.WriteLine("EXIT");
//Close the process
proc.Close();
//Read the sOut to a string
string results = sOut.ReadToEnd().Trim();
//Close the io Streams;
sIn.Close();
sOut.Close();
//Write out the results
string fmtStdOut = "<font face = courier size=0>{0}</font>";
this.Response.Write(String.Format(fmtStdOut,results.Replace(System.Environment.NewLine,"<br/>")));

}
--------------------编程问答-------------------- 當我上傳文件後就出現如下的錯誤:
Kaspersky Anti-Virus(TM) Command Line Shell [Version 5.0.77.0]
Copyright (C) 1997-2005 Kaspersky Lab. All rights reserved.

Scan process: starting...
Scan process: failed.
Access is denied. 

這樣的錯誤了 --------------------编程问答-------------------- UP
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,