Winforms Windows netsh WinForm进程。Start无法获取参数

Winforms Windows netsh WinForm进程。Start无法获取参数,winforms,arguments,trace,process.start,netsh,Winforms,Arguments,Trace,Process.start,Netsh,我正在使用Visual Studio 2017 C#。我正在尝试为我们的远程小型站点员工创建一个简单的Winform应用程序,帮助他们帮助IT远程支持从netsh跟踪捕获文件诊断其客户端计算机和某些企业应用程序(网络上的exchange服务器、Web应用程序、数据库等)之间的延迟问题 IT远程小型站点支持将打开跟踪文件,并隔离两个端点之间数据包延迟的原因 这里的目标是让远程小型站点员工启动Winform应用程序,单击启动netsh的按钮,捕获对文件的跟踪,并在几分钟后关闭netsh。我还没有写定

我正在使用Visual Studio 2017 C#。我正在尝试为我们的远程小型站点员工创建一个简单的Winform应用程序,帮助他们帮助IT远程支持从netsh跟踪捕获文件诊断其客户端计算机和某些企业应用程序(网络上的exchange服务器、Web应用程序、数据库等)之间的延迟问题

IT远程小型站点支持将打开跟踪文件,并隔离两个端点之间数据包延迟的原因

这里的目标是让远程小型站点员工启动Winform应用程序,单击启动netsh的按钮,捕获对文件的跟踪,并在几分钟后关闭netsh。我还没有写定时器的代码。下面的初始代码应该启动netsh,它不带参数。它将显示一个窗口,并显示netsh>提示。当我尝试使用参数运行netsh时,winformnetsh命令窗口会闪烁,然后立即关闭。我已经搜索了许多文章,尝试了许多建议的代码段,但似乎都不起作用。任何帮助都将不胜感激

******************代码**********************

    private void DegradationCaptureStartButton_Click(object sender, EventArgs e)
    {
        try
        {
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.WindowStyle = ProcessWindowStyle.Normal;
            startInfo.FileName = "netsh.exe";
            startInfo.Arguments = "trace start persistent=yes capture=yes tracefile=c://temp//billstrace.etl";
            startInfo.RedirectStandardOutput = false;
            startInfo.UseShellExecute = false;
            startInfo.CreateNoWindow = false;
            Process.Start(startInfo);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

您的代码将启动跟踪会话,打开指定目录中的文件。控制台窗口立即关闭,因为进程已退出。这不是控制台应用程序,如果在Cmd.exe窗口中输入相同的命令,也会发生这种情况,除非Cmd控制台窗口不关闭,因为它属于另一个进程。如果要查看有关已启动会话的netsh报告,请捕获标准输出并将其传递给TextBox控件。除非忘记发出
netsh trace stop
,否则提示将是“拒绝访问”=>文件/会话已存在。。。。。。当您关闭跟踪会话(
netsh trace stop
)时,控制台窗口的可见时间会更长一些,因为生成.cab文件需要时间。然后您还将看到前面的命令是否成功。谢谢Jimi。我感谢你的解释。要停止跟踪,我需要知道要停止跟踪的运行跟踪的哪个进程ID。如果启动netsh trace stop,系统将显示一个错误-未启动跟踪?
netsh
跟踪与特定的ProcessId无关。您可以从应用程序启动跟踪,然后从控制台cmd会话停止跟踪(
netsh->trace->show status
/
netsh->trace->stop
)。作为建议,我将以如下方式修改参数字符串:
@“trace start persistent=yes capture=yes tracefile=c:\temp\billstrace.etl”