2012-04-30 84 views
1

我有一个Windows服务在我的计算机上运行,​​并在计算机启动时进行初始化(它对其他服务有一些依赖关系,但在其后初始化)。如何在Windows 7中使用Windows Service打开应用程序?

然后,我有一个不同的应用程序,这取决于该服务运行(该应用程序包含一个用户界面)。

我想在服务启动时启动此应用程序。因此,我用下面的代码中的服务“的OnStart()”事件:

  var process = new Process(); 
      process.StartInfo = new ProcessStartInfo 
       { 
        CreateNoWindow = false, 
        WindowStyle = ProcessWindowStyle.Maximized 
       }; 

      try 
      { 
       process = Process.Start(applicationPath); 
       return (true); 
      } 
      catch (Exception e) 
      { 
       Logger.Log("ApplicationHelper::OpenApplication Error: " + e.Message); 
       Logger.Log(applicationPath); 

       return (false); 
      } 

什么情况是,应用程序的过程中开始运行,但不显示的UI。我只能看到该进程正在任务管理器中运行。我如何从Windows服务启动应用程序?

我已经启用了与桌面交互的选项,但它没有帮助。

我使用.Net 4和Windows 7.

谢谢!

实际上,当我尝试打开该服务时,会弹出一条Windows消息,指出它是与当前记录的尝试发送消息的用户不同的用户。但我无法将服务的起始用户配置为当前服务。

回答

0

服务可以在登录用户的上下文中启动应用程序,但这非常困难。在这种情况下,由于服务在系统启动后立即启动,因此可能还没有用户登录!

相反,只需将该应用程序添加到注册表中的运行键,以便它在用户登录时启动。由于它依赖于服务,因此应该检查它是否已启动如有必要等待。

相关问题