0

我正在尝试扫描单个文件以查找防病毒软件。我能够使用 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 通知尝试上传文件的用户。

4

0 回答 0