我正在尝试扫描单个文件以查找防病毒软件。我能够使用 Windows Defender 的命令行实用程序对其进行扫描。但是,在 Windows 服务器上,我们安装了 Trend Micro。趋势科技有命令行实用程序但是,如果它可以用于扫描给定文件路径的单个文件,我找不到任何帮助。
我下面的当前代码适用于 Windows Defender。我的猜测是对于趋势微,我只需要调整路径和参数。
public ScanResult Scan(string file, int timeoutInMs = 30000)
{
if (!File.Exists(file))
{
return ScanResult.FileNotFound;
}
var fileInfo = new FileInfo(file);
var process = new Process();
var startInfo = new ProcessStartInfo("C:\\Program Files\\Windows Defender\\MpCmdRun.exe")
{
Arguments = $"-Scan -ScanType 3 -File \"{fileInfo.FullName}\" -DisableRemediation",
CreateNoWindow = true,
ErrorDialog = false,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false
};
process.StartInfo = startInfo;
process.Start();
process.WaitForExit(timeoutInMs);
if (!process.HasExited)
{
process.Kill();
return ScanResult.Timeout;
}
switch (process.ExitCode)
{
case 0:
return ScanResult.NoThreatFound;
case 2:
return ScanResult.ThreatFound;
default:
return ScanResult.Error;
}
}
}
编辑 1
再三考虑,我认为命令行选项可能不起作用,因为它需要文件路径。我们在服务器上运行趋势微。一旦文件被写入光盘,它就会检测到威胁并隔离文件。所以 for 不可用于代码扫描。
我需要一种方法来扫描流而不是文件路径。因此,我们可以在写入光盘之前检测到威胁,并通过 UI 通知尝试上传文件的用户。