问题描述
您好!
是否有人知道如何从Windows Server 2008(64位)环境中的C#代码调用DoScan.exe实用程序(Symantic Endpoint Protection)。
我想要扫描用户从我网站上传的文件,如果发现任何受感染的文件,我想删除它们。
我已经为Windows XP(32位)系统做了这个,我的代码成功了。
但是当我试图在Windows Server 2008中执行相同的活动时,它会失败。
以下是代码
public void PerformScanning( string [] strfiles, string strFilePath, string strDestPath)
{
try
{
处理myProcess;
FileStatus objFileStatus;
myProcess = new Process();
if (!Directory.Exists(strFilePath + \\Logs))
{
Directory.CreateDirectory(strFilePath + \\Logs跨度>);
}
foreach ( string strFile in strfiles)
{
objFileStatus = new FileStatus();
myProcess.StartInfo.FileName = C:\\Program Files \\ Symantec \ \ Symantec Endpoint Protection\\DoScan.exe;
string myprocarg = C:\\Program Files \\ Symantec \\\\ tymantec Endpoint Protection \\DoScan.exe / cmdlinescan + strFile + / LOGFILE = \\ + strFilePath + \\Logs \\ + Path.GetFileName(strFile)+ 。 log \;
myProcess.StartInfo.Arguments = myprocarg;
myProcess.Start();
myProcess.WaitForExit();
int j = 0 ;
int y = 0 ;
for (j = 0 ; j < = 1000000 ; j ++)
{
y = y + 1 ;
}
string FILENAME = strFilePath + \\Logs\\ + Path.GetFileName(strFile)+ 的.log跨度>;
string SearchLine = null ;
bool IsClean = true ;
string MyFound = null ;
StreamReader objStreamReader = 默认(StreamReader);
objStreamReader = File.OpenText(FILENAME);
while (objStreamReader.Peek()!= -1)
{
SearchLine = objStreamReader.ReadLine() ;
if (SearchLine.Contains( Found ))
{
IsClean = false ;
MyFound = SearchLine;
}
}
objStreamReader.Close();
if (IsClean)
{
File.Move(strFile,strDestPath + \\ + Path.GetFileName(strFile));
if (File.Exists(strFilePath + \\ + strfiles))
{
File.Delete(strFilePath + \\ + strfiles);
}
objFileStatus.UpdateUploadedFileStatus( Sucess, Y,strDestPath + \\ + Path.GetFileName(strFile),Path.GetFileNameWithoutExtension(strFile).Substring( 6 ,Path.GetFileNameWithoutExtension( strFile).Length - 6 ), 未检测到威胁跨度>);
Console.WriteLine( 文件: + strFile + 成功扫描);
File.Delete(strFilePath + \\Logs \\ + Path.GetFileName(strFile)+ .log);
}
else
{
string path = strFile;
File.Delete(path);
objFileStatus.UpdateUploadedFileStatus( 失败, N,strFile,Path.GetFileNameWithoutExtension(strFile).Substring( 6 ,Path .GetFileNameWithoutExtension(strFile).Length - 6 ), 发现病毒);
Console.WriteLine( 文件: + path + 已删除。);
}
}
}
catch
{
Console.Write ( 由于某些异常),无法完成流程;
}
}
[/编辑]
任何帮助都将不胜感激。
谢谢
Sanjay
Hi!!
Does any one know how to invoke the DoScan.exe utility(Symantic Endpoint Protection) from the C# Code in Windows Server 2008(64bit) environment.
I want the files uploaded by users from my website to be scanned and if any infected files are found i want to remove those.
I have done this for Windows XP (32bit) System and my code does it successfully.
But when i tried to do the same activity in windows server 2008 , it fails.
[Edit]Here is the code
public void PerformScanning(string[] strfiles, string strFilePath,string strDestPath) { try { Process myProcess; FileStatus objFileStatus; myProcess = new Process(); if (!Directory.Exists(strFilePath + "\\Logs")) { Directory.CreateDirectory(strFilePath + "\\Logs"); } foreach (string strFile in strfiles) { objFileStatus = new FileStatus(); myProcess.StartInfo.FileName = "C:\\Program Files\\Symantec\\Symantec Endpoint Protection\\DoScan.exe"; string myprocarg = "C:\\Program Files\\Symantec\\Symantec Endpoint Protection\\DoScan.exe /cmdlinescan " + strFile + "/LOGFILE=\\" + strFilePath + "\\Logs\\" + Path.GetFileName(strFile) + ".log\""; myProcess.StartInfo.Arguments = myprocarg; myProcess.Start(); myProcess.WaitForExit(); int j = 0; int y = 0; for (j = 0; j <= 1000000; j++) { y = y + 1; } string FILENAME = strFilePath + "\\Logs\\" + Path.GetFileName(strFile) + ".log"; string SearchLine = null; bool IsClean = true; string MyFound = null; StreamReader objStreamReader = default(StreamReader); objStreamReader = File.OpenText(FILENAME); while (objStreamReader.Peek() != -1) { SearchLine = objStreamReader.ReadLine(); if (SearchLine.Contains("Found")) { IsClean = false; MyFound = SearchLine; } } objStreamReader.Close(); if (IsClean) { File.Move(strFile, strDestPath + "\\" + Path.GetFileName(strFile)); if (File.Exists(strFilePath + "\\" + strfiles)) { File.Delete(strFilePath + "\\" + strfiles); } objFileStatus.UpdateUploadedFileStatus("Sucess", "Y", strDestPath + "\\" + Path.GetFileName(strFile), Path.GetFileNameWithoutExtension(strFile).Substring(6, Path.GetFileNameWithoutExtension(strFile).Length - 6), "No threat detected"); Console.WriteLine("File:" + strFile + "Scanned Sucessfully"); File.Delete(strFilePath + "\\Logs\\" + Path.GetFileName(strFile) + ".log"); } else { string path = strFile; File.Delete(path); objFileStatus.UpdateUploadedFileStatus("Failure", "N", strFile, Path.GetFileNameWithoutExtension(strFile).Substring(6, Path.GetFileNameWithoutExtension(strFile).Length - 6), "Virus Found"); Console.WriteLine("File:" + path + "Deleted."); } } } catch { Console.Write("The Process Cannot be completed due to some exception"); } }
[/Edit]
any help would be appreciated.
Thanks
Sanjay
这篇关于从命令行调用DoScan.exe实用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!