Netsh命令无法显示更正TextBox中的结果

时间:2017-02-14 16:42:10

标签: c# admin netsh

    class TcpIpCommands
    {
        public string Check()
        {
            Process p = new Process();
            p.StartInfo.FileName = @"C:\Windows\syswow64\netsh.exe";
            p.StartInfo.Arguments = "int tcp show global";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(737);
            p.Start();
            p.WaitForExit();
            return p.StandardOutput.ReadToEnd();
        }

        public string Command(string FileName, string Arguments)
        {
            ProcessStartInfo p = new ProcessStartInfo();
            p.FileName = FileName;
            p.Arguments = Arguments;
            p.UseShellExecute = false;
            p.CreateNoWindow = true;
            p.RedirectStandardOutput = true;
            p.StandardOutputEncoding = Encoding.GetEncoding(737);

            using (Process process = Process.Start(p))
            {
                using (StreamReader reader = process.StandardOutput)
                {
                    string result = reader.ReadToEnd();
                    return result;
                }
            }            
        }

        public string Reseting()
        {
            Process p = new Process();
            p.StartInfo.FileName = @"C:\Windows\syswow64\netsh.exe";
            p.StartInfo.Arguments = @"interface tcp reset";
            p.StartInfo.Verb = "runas";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(737);
            p.Start();
            p.WaitForExit();
            return p.StandardOutput.ReadToEnd();
        }
    }

我遇到了Command Method和Reseting Method的问题。如果我尝试执行它们,我会在RichTextBox中收到消息 在ipv4上设置全局命令失败参数不正确

但如果我运行netsh interface tcp show global或点击Check Method,他们会告诉我状态是否发生变化。

这是按钮

        private void BtnCheck_Click(object sender, EventArgs e)
        {
            TcpIpCommands tic = new TcpIpCommands();
            richTextBox1.Text = tic.Check();
        }    
        private void btnChimney_Click(object sender, EventArgs e)
        {
            TcpIpCommands tic = new TcpIpCommands();
            richTextBox1.Text = tic.Command(@"C:\Windows\system32\netsh.exe", "interface tcp set global chimney=enabled");            
        }    
        private void BtnReset_Click(object sender, EventArgs e)
        {
            TcpIpCommands tic = new TcpIpCommands();
            richTextBox1.Text = tic.Reseting();
        }

我无法理解为什么RichTextBox显示该消息但进程成功执行。 一张纸条。我尝试使用

运行命令
    StartInfo.Verb = "runas";

都来自     C:\Windows\System32\netsh.exe  和 C:\Windows\syswow64\netsh.exe 我得到相同的错误"在ipv4上设置全局命令失败参数不正确"但代码执行和参数更改。

0 个答案:

没有答案