現在、WCF サービス、Windows サービス、および WPF アプリケーションを含むプロジェクトに取り組んでいます。Windows サービスは WCF と通信し、特定の状況下では、ユーザーがメッセージを受信できるように WPF アプリケーションを起動する必要があります。(WCF はリモート サーバー上にあり、残りはクライアント上にあります)。私は打ち上げでちょっとした障害にぶつかりました。途中で多少「デバッグ」できるように、サービスがアプリケーションログにメッセージを書き込んでいます。Windows サービスは、次のコードを問題なく実行します。
C# コード、Windows サービス:
WriteLog.WriteString("PostOffice.MessagesWaiting: Inside, starting up.", EventLogEntryType.Warning);
// Call the WPF Application
var messagingProcess = new Process();
var messageProcessStartInfo = new ProcessStartInfo(@"""C:\GoldenEyeMessages.exe""");
messageProcessStartInfo.CreateNoWindow = false;
messageProcessStartInfo.UseShellExecute = false;
messageProcessStartInfo.FileName = @"""C:\GoldenEyeMessages.exe""";
messageProcessStartInfo.WindowStyle = ProcessWindowStyle.Normal;
messageProcessStartInfo.Verb = "runas";
messageProcessStartInfo.RedirectStandardOutput = true;
messagingProcess.StartInfo = messageProcessStartInfo;
messagingProcess.Start();
StreamReader daStreamReaderMan = messagingProcess.StandardOutput;
string newString = daStreamReaderMan.ReadLine();
WriteLog.WriteString("PostOffice.MessagesWaiting: The Eagle has landed.", EventLogEntryType.Warning);
WPF アプリケーションは、現在のユーザーのセッションでは実行されません。代わりに、メッセージを表示するポップアップが表示されます。これがその写真です:
「メッセージを表示する」オプションを選択すると、もちろん別のセッションに切り替わり、WPF アプリケーションが実行されます。
私の質問は、現在のユーザーのセッションまたは「アクティブな」セッション内で WPF アプリケーションを起動するにはどうすればよいですか?