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サービスからアプリケーションを起動するにはどうすればよいですか?

デスクトップと対話するオプションをすでに有効にしましたが、役に立ちませんでした。

.Net4とWindows7を使用しています。

ありがとう!

実際、サービスを開こうとすると、メッセージを送信しようとしている現在ログに記録されているユーザーとは異なるユーザーであることを示すWindowsメッセージがポップアップ表示されます。しかし、サービスの開始ユーザーを現在のユーザーに構成することはできません。

4

1 に答える 1

0

ログインしたユーザーのコンテキストでサービスがアプリケーションを起動することは可能ですが、それは非常に困難です。この場合、システムが起動するとすぐにサービスが開始されるため、ユーザーはまだログインしていない可能性があります。

代わりに、レジストリのRunキーにアプリケーションを追加するだけで、ユーザーがログインしたときにアプリケーションが起動します。これはサービスに依存しているため、サービスがまだ開始されているかどうかを確認し、必要に応じて待機する必要があります。 。

于 2012-04-30T21:17:28.607 に答える