Windows 10命令提示符以编程方式为某些命令

时间:2017-03-28 07:16:02

标签: command-prompt processstartinfo

我有一个遗留的winForms程序(在Windows 7 Embedded上运行),我们正试图在Windows 10上运行。我们有一个简单的过程,我们启动命令提示符进程cmd.exe并执行各种任务。一个任务是与写过滤器进行交互。 WES7使用ewfmgr,而windows 10使用uwfmgr命令行工具。

为了解释结果,我们读取输出并根据输出做出决定。

问题是在Windows 10上输出是不可读的。这仅适用于

示例简单代码:

private Process statusProcess = new Process();
private List<string> cmdOutput = new List<string>();

ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
cmdStartInfo.FileName = @"C:\Windows\System32\cmd.exe";
cmdStartInfo.WorkingDirectory = @"C:\Dev";
cmdStartInfo.CreateNoWindow = true;
cmdStartInfo.UseShellExecute = false;
//Add Admin account details
cmdStartInfo.Domain = "Bla";
cmdStartInfo.UserName = "Admin";
cmdStartInfo.Password = securePwd;
cmdStartInfo.RedirectStandardOutput = true;
cmdStartInfo.RedirectStandardError = true;
cmdStartInfo.RedirectStandardInput = true;

statusProcess.StartInfo = cmdStartInfo;

statusProcess.ErrorDataReceived += cmd_Error;
statusProcess.OutputDataReceived += cmd_DataReceived;
statusProcess.EnableRaisingEvents = true;
statusProcess.Start();
statusProcess.BeginOutputReadLine();
statusProcess.BeginErrorReadLine();

//cmd_DataReceived Simple just add data
private void cmd_DataReceived(object sender, DataReceivedEventArgs e)
{
        cmdOutput.Add(e.Data);
}

使用

发送命令
statusProcess.StandardInput.WriteLine("dir");

如果我们运行像dir这样的命令,我们会得到完美的结果。

如果我们运行uwfmgr Get-Config Output of uwfmgr Get-Config

虽然该命令显示config,但set命令不起作用,因此它不仅是输出问题还是它?

错误流为空,我假设错误流正常,因为我可以在其他命令上获得错误。

代码页设置为437,其他命令按预期工作,请注意第一行是正确的并且有意义。

我尝试了不同的方法

  1. 我写了一个powershell脚本并且可以正确调用脚本,但我无法通过错误流中的UAC(我认为它的UAC但我得到访问被拒绝)并且也不知道如何获得输出来自powershell

  2. 看起来使用System.Management.Automation中的powershell类,可以使W10工作,但会引入WES7问题。

  3. 我很好奇为什么输出显示那样?

    我刚刚写了这篇文章,我想知道安全性是不是让我感到困扰,我会调查这个角度。

    如果有人指点,请提前致谢。

0 个答案:

没有答案