从进程隐藏控制台窗口。启动 C #

我正在尝试使用 System.Diagnostics.Process 类在远程计算机上创建进程。 I am able to create a process. But the problem is, creating a service is take a long time and console window is displayed. 另一个恼人的事情是控制台窗口显示在我的窗口表单顶部,我不能做任何其他操作在该表单。 I have set all properties like 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();
161027 次浏览

当我试图在不显示控制台窗口的情况下启动一个进程时,也遇到了类似的问题。我用几种不同的属性值组合进行了测试,直到找到了一种表现出我想要的行为的组合。

下面的页面详细说明了为什么必须将 UseShellExecute属性设置为 false。
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx

网页备注部分:

如果 UseShellExecute 属性为 true 或 UserName 和 密码属性不为空,即 CreateNoWindow 属性 值将被忽略并创建一个新窗口。

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = fullPath;
startInfo.Arguments = args;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;


Process processTemp = new Process();
processTemp.StartInfo = startInfo;
processTemp.EnableRaisingEvents = true;
try
{
processTemp.Start();
}
catch (Exception e)
{
throw;
}

我在这个问题上运气不好,因为这个过程(Wix light.exe)实际上是出去吃午饭,没有及时回家吃晚饭。然而,下面的方法对我很有效:

Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// etc, then start process

这应该行得通,试试吧;


添加系统引用。

using System.Diagnostics;

然后使用此代码在隐藏的 CMD 窗口中运行命令。

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.Arguments = "Enter your command here";
cmd.Start();

这里没有显示窗口:

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.CreateNoWindow = true;


...
cmd.Start();