Windowsサービスを使用してアプリケーションをポップアップしたい。Windowsサービスを使用してアプリケーションをポップアップする方法C#
は、今私が使用していたコードは次のとおりです。私は、サービスの実行を開始する際、コードがアプリケーションをポップアップ表示されません
System.Diagnostics.Process.Start(@" ");
。
Windowsサービスを使用してアプリケーションをポップアップしたい。Windowsサービスを使用してアプリケーションをポップアップする方法C#
は、今私が使用していたコードは次のとおりです。私は、サービスの実行を開始する際、コードがアプリケーションをポップアップ表示されません
System.Diagnostics.Process.Start(@" ");
。
これは正確なコードですか?
もしあなたが実際に何かを開始するプロセスを与えていないならば、ただ空の文字列です。実行可能ファイルの名前を渡す必要があります。例えば
:
System.Diagnostics.Process.Start(@"C:\Windows\System32\notepad.exe");
、これは正確なコードでない場合は、正確なコードで問題を修正投稿してください。
私はそのコードを使用しましたが、動作しません。 – wmazizi
これはできません。ユーザーセッションの対話はWindows Vista以降に削除されました。プロセスは、サービスが実行されるセッションで開始されます。サービスごとに定義されているのは、デスクトップインタラクティブではありません。
あなたはになります。は、ウィンドウレスのコンソール専用ツールを実行します。
ロングストーリー:Vista以前は、すべてのサービスが最初のログインユーザー(「セッション0」)と同じセッションで実行されました。これはセキュリティの問題であるため、これはVistaで変更されました。専用セッション(「セッション0」)がサービスの開始からアクティブになっています。最初のユーザーはセッション1にログインし、次のユーザーはセッション2にログインします。
これらのセッションが分離されているため、デスクトップ対話型サービスを作成することはできません。はサービスのデスクトップセッションではありません。
これはまた、セッション0にメッセージボックスを表示したり、デスクトップ対話型ツールを実行したりすることができないことを意味します。誰も表示できません。
正確ではないので、「セッション分離」である必要があります。https://msdn.microsoft.com/en-us/library/windows/hardware/dn653293(v=vs.85).aspx –
正確でない可能性があります、しかしまだ正しいです:-)リンクを提供してくれてありがとう。 –
@ThorstenDirrmarが示したように、それは純粋にセッションの問題です。セッションが何であるかわからない場合は、Windowsをもっと勉強しなければなりません。セッションを分離するには、アプリケーションをWindowsサービスとユーザーセッションで実行されているデスクトップアプリケーションに分割する必要があります。プロセス間通信は、デスクトップアプリケーションにユーザーにプロンプトを出すよう通知することができます。 –
[GUIサービス](http://www.coretechnologies.com/WindowsServices/FAQ.html#GUIServices)のこのエントリを確認し、それに応じてデザインを調整することを検討してください。 – CoreTech