启动控制台应用程序作为新进程隐藏窗口

时间:2014-01-22 11:46:13

标签: c# .net wpf console-application

我正在尝试创建一个自修补应用程序,如下所示:

  1. .Net WPF应用程序确定是否存在新版本(本身)
  2. 此WPF应用程序启动.Net控制台应用程序(process.Start)以执行必要的
  3. 控制台应用程序然后执行一些任务并启动新版本的.Net WPF应用程序(process.Start)
  4. 一切正常,即我可以看到正在按要求启动进程,但是当控制台应用程序启动WPF应用程序的新实例时,没有窗口可见 - 从用户的角度来看,它看起来好像什么都没有加载。 / p>

    使用这种方法需要考虑的任何陷阱 - 使用控制台应用程序重新启动基于Windows的UI?

    启动控制台的代码(在控制台端同样启动WPF应用程序)

    var info = new ProcessStartInfo(commandFileName) 
    { 
        Arguments = args 
    } 
    Process.Start(info); 
    

    使用此功能无法看到控制台应用。

2 个答案:

答案 0 :(得分:0)

This post可能会帮助您显示控制台。然后添加Console.ReadLine()应该保持窗口打开。

答案 1 :(得分:0)

好吧,我的错误 - 错过了这个难题的最关键部分......

这是一个Windows服务,它执行实际的Process.Start调用,即原始WPF应用程序执行此服务的调用,启动控制台应用程序(然后最终重新启动WPF应用程序)。

因此很清楚问题是什么: Windows服务不会与桌面交互,因此尽管该过程实际启动,但不会显示任何窗口。

阅读以下文章后我解决了这个问题: http://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-32-and-64-bit-Archite