c# - 从 Process.Start C# 隐藏控制台窗口

标签 c# process console-application

我正在尝试使用 System.Diagnostics.Process 类在远程机器上创建进程。 我能够创建一个过程。但问题是,创建服务需要很长时间,并且会显示控制台窗口。 另一个烦人的事情是控制台窗口显示在我的窗口窗体之上,我无法在该窗体上执行任何其他操作。 我已经设置了所有属性,例如 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();

最佳答案

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

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

在页面的备注部分下:

If the UseShellExecute property is true or the UserName and Password properties are not null, the CreateNoWindow property value is ignored and a new window is created.

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;
}

关于c# - 从 Process.Start C# 隐藏控制台窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377423/

相关文章:

java - Android Stduio 中无法出现 "Build APK"[libGDX]

visual-studio-2008 - 在 Visual Studio 2008 中将控制台应用程序转换为 Windows 应用程序?

c# - 使用 protobuf-net 的 C# 项目中的 Protocol Buffer - 代码生成的最佳实践

c# - UWP-x :Bind Mode=TwoWay throws errors without converter

c# - 使用 SaveFileDialog 从 Mysql 打开一个 Blob 文件到 PC

C#进程不接收输入

c# - 如何指定用于 WebClient 类的 SSL 协议(protocol)

c - 如何使用 mmap(2) 从子进程修改父进程的环境?

c# - 如何自动关闭控制台应用程序窗口

c++ - 我怎样才能使 cout 更快?