【问题标题】:C# process being cancelled after Process.Start()C# 进程在 Process.Start() 之后被取消
【发布时间】:2019-09-30 19:46:27
【问题描述】:

我正在尝试从 C# 代码运行命令提示符命令。

Process.Start() 步骤执行后,控制台窗口显示

出现系统错误 1223。该操作已被取消 用户。

错误:

但是,如您所见,我并没有取消操作。

我的代码:

            Process process = new Process();

            process.StartInfo.FileName = "cmd.exe";
            process.StartInfo.Arguments = $"/C NET USE {driveChar}: {URL}";
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardInput = true;

            process.Start(); // After this step, console window shows the above error

            StreamWriter streamWriter = process.StandardInput;

            streamWriter.WriteLine(username);

            ...
            ...

            // remaining code

出了什么问题?有关解决此错误的任何想法?

编辑:

我实际上不需要重定向标准输出,所以我修改了我的代码,只重定向标准输入。但我仍然遇到同样的错误。

【问题讨论】:

  • 如果你想同时重定向标准输入和输出,你必须read at least one asynchronously 否则你会死锁。
  • @DourHighArch 我实际上不需要重定向标准输出,所以我修改了我的代码只重定向标准输入。但我仍然遇到同样的错误。

标签: c# .net windows cmd process


【解决方案1】:

这将起作用...我使用 /K 开关,因为我不想终止 CMDscreen 并希望看到结果..如果需要自动终止,请使用 /C

     string strCmdText;
     strCmdText = @"/K NET USE z: \\server\SharedFolderName";
     System.Diagnostics.Process.Start("CMD.exe", strCmdText);

==========结果============================

【讨论】:

  • 谢谢。我认为这就是该错误的原因。我无法让它与我原来的远程位置一起工作,但能够连接到其他位置。应该是那个服务器的问题。无论如何,我最终选择了不同的方法 (serverfault.com/a/967134/413154),并且不必写入流程输入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
相关资源
最近更新 更多