c# - 带参数运行exe不起作用

标签 c# psexec

var p = Process.Start(@"c:\PsTools\PsExec.exe", @"C:\Windows\System32\notepad.exe");
var err = p.StandardError.ReadToEnd();
var msg = p.StandardOutput.ReadToEnd();
lblStatusResponse.Text = "Err: " + err + "Msg: " + msg;

为什么我的代码不起作用?

我收到错误:

System.InvalidOperationException: StandardError has not been redirected.

但是当我添加以下内容时:

p.StartInfo.RedirectStandardError = true;
var p = Process.Start(@"c:\PsTools\PsExec.exe", @"C:\Windows\System32\notepad.exe");) 

它仍然得到同样的错误。

主要问题是我想执行带参数的 exe,但我无法让它工作。

最佳答案

以下代码生成一个新的 p,这会忽略您在上一个实例中更改的设置:

var p = Process.Start(@"c:\PsTools\PsExec.exe", @"C:\Windows\System32\notepad.exe");) 

所以你是否像这样初始化p并不重要

p.StartInfo.RedirectStandardError = true;

或者不是。

你需要做什么

您需要创建一个 ProcessStartInfo 对象,对其进行配置,然后将其传递给 Process.Start

ProcessStartInfo p = new ProcessStartInfo(@"c:\PsTools\PsExec.exe", @"C:\Windows\System32\notepad.exe");
p.UseShellExecute = false;
p.RedirectStandardError = true;
p.RedirectStandardOutput = true;

Process proc = Process.Start(p);

var err = proc.StandardError.ReadToEnd();
var msg = proc.StandardOutput.ReadToEnd();

关于c# - 带参数运行exe不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28607363/

相关文章:

sql-server - 从 xp_cmdshell 调用时 psexec 无法正常工作

c# - 不区分大小写的列表搜索

c# - ASP.NET Core反射di

windows - PsExec 抛出错误消息,但工作没有任何问题

nunit - 在远程虚拟机上进行自动化 UI 测试的策略

PowerShell 脚本 - 如何处理执行命令的结果

windows - PsExec 没有复制文件来执行

c# - 向表中添加多个值

c# - 检测 IDataReader 是否为空的最佳方法是什么?

c# - 从 URL 字符串中提取查询字符串