回答:
主にセキュリティ上の理由。
、彼らは通常のみもIEでサービスが実行され、セッション0というセッションで見られたWindowsサービスは、メッセージボックスなどのGUIコントロールを作成するときに、私は、それを理解したように使用があることを最初のユーザーは、ローカルまたは使用上の誰かロギングしてログオンmstsc / admin。したがって、このユーザーにはこれらのコントロールが表示され、サービスと対話できます。
ただし、セキュリティ上の理由から、セッション0は予約されており、最初にログオンしたユーザーには新しいセッションが与えられるため、GUIコントロールは表示されません。
これは互換性のために非常に多くのサービスを中断するため、メッセージが表示されているかどうかを検出しようとするプロセス(このMSDNブログを参照)と、「このコンピューターで実行中のプログラムはメッセージを表示しようとしています」というポップアップが表示されます'メッセージを表示または無視できます。
マイクロソフトでは、このテーマに関するWhitePaperを用意しており、こちらからダウンロードできます。
また、別の小さな理由は、機能が誤用/誤解され、設計が不適切だったためだと考えています。たとえば、イベントログに書き込むのではなく、メッセージボックスを使用していくつかの通知/エラーを表示するサードパーティのサービスを備えた古いサーバーを使用していました。しかし、ローカルにログオンしたことはなく、管理モードでログインすることはほとんどなかったため、メッセージは表示されませんでした。
以前は対話型サービスが可能でしたが、サービスモデルは、ユーザーとは無関係に実行されるプロセスのものです。これらは無人で実行されるように設計されているため、GUIは必要ありません。
Windows Vista以降、インタラクティブサービスは利用できなくなったため、使用しないでください。
サービスとやり取りする必要がある場合は、リンク先のページで、名前付きパイプなどの何らかのプロセス間通信(IPC)を介してサービスと通信する別のGUIアプリケーションを作成することをお勧めします。
サービスはユーザーと対話せずにバックグラウンドで実行されることになっているためです。実際、ユーザーがログインしていないときに実行される場合があります。
はい、それは可能であり、うまくいきました。ログインすると、アプリケーションのインターフェースが表示されます。これは、利用可能なサービスはないが、サーバー上で実行する必要がある古いアプリケーションに非常に役立ちました。最も安定したソリューションではありませんでしたが。クリックまたはログアウトできるユーザーとして実行されるようになりました。それはあまり良くありませんでした。
現在、誰もがネイティブサービスを開発し、アプリケーションまたはログを追加してサービスを管理しています。これは優れたデザインパターンであり、現在ほとんどの場合に使用されています。
そのため、それが可能であったことをよりレガシーと考えてください。