2014-01-22 87 views
0

我试图按照以下步骤创建一个自修补程序:启动控制台应用程序作为新进程隐藏窗口

  1. 的.Net WPF应用程序确定新版本是否存在(本身)
  2. 这WPF应用程序开始一个.net控制台应用程序(的Process.Start),以进行必要的
  3. 控制台应用程序,然后执行一些任务,并触发了净WPF应用程序的新版本(的Process.Start)

所有作品好吧,即我可以e根据需要启动进程,但是当控制台应用程序启动WPF应用程序的新实例时,不会显示任何窗口 - 从用户的角度来看,它显示为没有加载任何窗口。

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

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

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

控制台应用程序中使用,这是不可见的。

+0

是控制台应用程序可见?如果您想得到体面的帮助,请向我们显示您的代码(例如,您开始另一个流程的地方)。 – noelicus

+0

更新了我的问题 – NubieJ

回答

0

好吧,我的错误 - 错过了拼图的最关键的部分...

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

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

我身边这让阅读下面的文章后: http://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-32-and-64-bit-Archite

0

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

相关问题