从 .NET 应用执行 cmd.exe 可能导致0xE0434352异常的可能原因是什么?



我有一个.net(C#(控制台应用程序,当我通过VS2017中的"开始"按钮执行时,以及当我直接启动.exe文件时,它会运行。但是,当通过Windows任务计划程序执行时,我收到一个不特定的错误:0xE0434352

我发现错误是执行此方法的结果:

internal static class Lib
{
internal static async Task<String> ExecuteCmd (string txt, string cli = "cmd.exe", string args = "")
{
using ( Process cmd = new Process
{
StartInfo = new ProcessStartInfo()
{
FileName = cli,
Arguments = args,
RedirectStandardInput = true,
RedirectStandardOutput = true,
CreateNoWindow = false,
UseShellExecute = false,
}
} )
{
cmd.Start();
await cmd.StandardInput.WriteLineAsync(txt);
await cmd.StandardInput.FlushAsync();
cmd.StandardInput.Close();
cmd.WaitForExit();
return await cmd.StandardOutput.ReadToEndAsync();
}
}
}
// Then that method is called from the Main method like so:
public static async Task Main (string[] args)
{
ExecuteCmd($"echo Complete! >> myFile.log");
}

这是什么原因呢?我得到的异常(来自事件查看器(是:

应用程序错误

Application: myapp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.NullReferenceException
at myapp.App+<Main>d__0.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at myapp.App.<Main>(System.String[])

框架错误

Faulting application name: myapp.exe, version: 1.0.0.0, time stamp: 0x5b0d3a3e
Faulting module name: KERNELBASE.dll, version: 10.0.16299.402, time stamp: 0x81d25214
Exception code: 0xe0434352
Fault offset: 0x00103f12
Faulting process id: 0x51d4
Faulting application start time: 0x01d3f752fb93dfdb
Faulting application path: pathtomyapp.exe
Faulting module path: C:WINDOWSSystem32KERNELBASE.dll
Report Id: c15aa1dc-fb36-49df-a37c-5866116c39d7
Faulting package full name: 
Faulting package-relative application ID: 

====

========= 编辑 ==================在运行时,我正在从映射的网络驱动器中检索 JSON 文件:

IConfiguration jsonConfig = new ConfigurationBuilder()
.AddJsonFile("X:configs", optional: false, reloadOnChange: false)
.Build();

我发现删除它至少可以解决一个问题。 虽然可能还有其他人

"Windows Task Scheduler">

我敢打赌,这将是"开始位置"字段为空或格式不正确。将 exe 的文件夹放在"开始位置"字段中,并将其双引号。 "C:/yesEven/Paths/like/this/">

最新更新