我在ASP.Net应用程序中从C#调用Vipre的命令行实用程序来扫描文件中的恶意软件。我是机器的管理员,所有这一切都在这里发生。当我:
好的,非常清楚,它需要在管理用户下运行。所以,我认为我只需使用以下代码在我的凭据下启动该过程。这就是我的麻烦和困惑开始的地方:
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
Arguments = string.Format($"/scanfile \"{filePath}\""),
FileName = Settings.CommandLineScannerPath,
CreateNoWindow = true,
UseShellExecute = false,
Domain = "domain",
UserName = "username",
Password = GetSecureString("password")
}
};
proc.Start();
proc.WaitForExit();
if (proc.ExitCode != 0
&& proc.ExitCode != 1)
{
throw new Exception($"Unexpected result: " + proc.ExitCode);
}
return proc.ExitCode == 0 ? AntivirusScanResult.Clean : AntivirusScanResult.Dirty;
令我惊讶的是,它的行为完全相同:
这些案件有何不同?从技术上讲,他们都在我的用户之下,因为我在用户下启动了进程......对吗?我错过了什么?为什么它的行为会有所不同,具体取决于它在我的用户下运行的确切机制?
注意:我也要联系Vipre,找出退出代码的含义