1

我有一个在我的计算机中运行的 Windows 服务,并在计算机打开时初始化(它对其他服务有一些依赖,但在它们之后立即初始化)。

然后,我有一个不同的应用程序,它依赖于该服务的运行(应用程序包含一个 UI)。

我想在服务启动时启动这个应用程序。因此,我在服务的“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 消息,指出它与当前登录的尝试发送消息的用户不同。但我无法将服务的起始用户配置为当前用户。

4

1 回答 1

0

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

相反,只需将应用程序添加到注册表中的 Run 键,这样它就会在用户登录时启动。由于它依赖于服务,您可能应该让它检查服务是否已经启动并在必要时等待.

于 2012-04-30T21:17:28.607 回答