답변:
주로 보안상의 이유.
내가 이해하는 것처럼 Windows 서비스가 MessageBox와 같은 GUI 컨트롤을 만들 때 일반적으로 서비스가 실행되는 세션 (예 : 로컬로 로그온 한 첫 번째 사용자 또는 세션을 사용 하여 로그온 한 사람 이었던 세션 0)에서만 볼 수 있습니다. mstsc / admin. 따라서이 사용자는 이러한 컨트롤을보고 서비스와 상호 작용할 수 있습니다.
그러나 보안상의 이유로 이제 세션 0이 예약되었으며 로그온 한 첫 번째 사용자에게 새 세션이 제공되므로 GUI 컨트롤이 표시되지 않습니다.
이것은 많은 서비스를 중단하기 때문에 호환성을 위해 메시지가 표시되는지 여부를 감지 하는 프로세스 ( 이 MSDN 블로그 참조 ) 와 '이 컴퓨터에서 실행중인 프로그램이 메시지를 표시하려고합니다. 메시지를 보거나 무시할 수 있습니다.
Microsoft는이 주제에 대한 백서를 여기 에서 다운로드 할 수 있습니다.
또한 다른 사소한 이유는 기능이 잘못 사용되어 잘못 이해되어 설계가 잘못 되었기 때문이라고 생각합니다. 예를 들어, 이벤트 로그에 쓰지 않고 메시지 상자를 사용하여 일부 알림 / 오류를 표시하는 타사 서비스가있는 오래된 서버를 사용했습니다. 그러나 로컬로 로그온하지 않았으며 관리자 모드로 거의 로그인하지 않았으므로 메시지가 표시되지 않습니다.
대화식 서비스는 가능 했지만 서비스 모델은 모든 사용자와 독립적으로 실행되는 프로세스의 모델입니다. 자동으로 실행되도록 설계되었으므로 GUI가 필요하지 않습니다.
Windows Vista부터 대화식 서비스를 사용할 수 없었으므로 더 이상 사용하지 않아야합니다.
서비스와 상호 작용 해야하는 경우 링크 된 페이지는 일종의 명명 된 파이프와 같은 프로세스 간 통신 (IPC)을 통해 서비스와 통신하는 별도의 GUI 응용 프로그램을 만드는 것이 좋습니다.
서비스는 사용자와 상호 작용하지 않고 백그라운드에서 실행되어야하기 때문에; 실제로 사용자가 로그인하지 않은 상태에서 실행될 수 있습니다.