我正在尝试使用System.Diagnostics.Process类在远程计算机上创建进程。我能够创建一个过程。但是问题是,创建服务需要很长时间,并且会显示控制台窗口。另一个烦人的事情是控制台窗口显示在我的Windows窗体顶部,而我无法对该窗体执行任何其他操作。我已将所有属性设置为CreateNoWindow = true
,
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
但仍然显示控制台窗口。即使我已经将输出和错误重定向到单独的流,但没有运气。
还有其他隐藏控制台窗口的方法吗?请帮帮我。
这是我用来执行sc命令的部分代码。
Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.FileName = "sc";
proc.StartInfo.Arguments = string.Format(@"\\SYS25 create MySvc binPath= C:\mysvc.exe");
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
有完整源代码示例的最终解决方案吗?
—
Kiquenet
只要打开控制台窗口并锁定表单,您就应该以“任务”或新线程运行进程
—
Ryan Dooley '18
你为什么要设置
—
Mike Lowery
UseShellExecute
和CreateNoWindow
两次?
proc.StartInfo.RedirectedStandardOutput = true
吗?我已经将其与Windows应用程序一起使用。