Câu trả lời:
Chủ yếu là lý do bảo mật.
Theo tôi được biết, khi một dịch vụ cửa sổ tạo điều khiển giao diện như một MessageBox, họ thường chỉ thấy trong phiên giao dịch mà chạy dịch vụ trong ví dụ Session 0 mà cũng sử dụng được người dùng đầu tiên đăng nhập tại địa phương hoặc bởi một ai đó đăng nhập vào sử dụng mstsc / quản trị viên. Do đó người dùng này sẽ thấy các điều khiển này và có thể tương tác với dịch vụ.
Nhưng vì lý do bảo mật, Phiên 0 hiện được bảo lưu và người dùng đầu tiên đăng nhập sẽ được cung cấp một phiên mới và do đó không thấy Điều khiển GUI.
Vì điều này phá vỡ khá nhiều dịch vụ, để tương thích, có một quá trình (xem blog MSDN này) cố gắng phát hiện nếu có bất kỳ tin nhắn nào được hiển thị và cửa sổ bật lên với cảnh báo 'Một chương trình đang chạy trên máy tính này đang cố hiển thị thông báo 'và cho phép bạn xem hoặc bỏ qua tin nhắn.
Microsoft có WhitePaper về chủ đề này mà bạn có thể tải xuống từ đây
Tôi cũng sẽ nghi ngờ rằng một lý do nhỏ khác là vì tính năng này đã bị lạm dụng / hiểu lầm và dẫn đến các thiết kế xấu. Ví dụ: tôi đã từng có một máy chủ cũ với dịch vụ của bên thứ ba hiển thị một số thông báo / lỗi bằng hộp thông báo thay vì ghi vào nhật ký sự kiện. Nhưng tôi không bao giờ đăng nhập cục bộ và hiếm khi đăng nhập ở chế độ quản trị viên và do đó tôi sẽ không thấy các tin nhắn.
Các dịch vụ tương tác được sử dụng là có thể , nhưng mô hình dịch vụ là một quá trình chạy độc lập với bất kỳ người dùng nào. Chúng được thiết kế để chạy không giám sát và do đó không cần GUI.
Các dịch vụ tương tác không có sẵn kể từ Windows Vista nên không còn được sử dụng.
Nếu bạn cần tương tác với dịch vụ, trang tôi đã liên kết để khuyên bạn nên tạo một ứng dụng GUI riêng để giao tiếp với dịch vụ thông qua giao tiếp giữa các quá trình (IPC) - ví dụ như các đường ống có tên.
Bởi vì các dịch vụ được cho là chạy trong nền mà không tương tác với người dùng; thực tế họ có thể chạy trong khi không có người dùng nào đăng nhập.
Vâng, nó là có thể và nó đã làm việc. Khi bạn đăng nhập, bạn có giao diện của ứng dụng. Nó rất hữu ích cho các ứng dụng cũ không có dịch vụ nhưng vẫn cần chạy trên máy chủ. Mặc dù nó không phải là giải pháp ổn định nhất. Nó đã trở thành hoạt động như người dùng có thể nhấp vào nó hoặc đăng xuất. Điều đó không tốt lắm.
Bây giờ mọi người phát triển dịch vụ bản địa và thêm ứng dụng hoặc nhật ký để quản lý dịch vụ. Đó là một mẫu thiết kế tốt và hiện đang được sử dụng hầu hết thời gian.
Vì vậy, xem nó nhiều hơn là di sản mà nó có thể.
Các dịch vụ này dành cho các hoạt động chưa tham dự, chủ yếu ở chế độ nền. Bản thân dịch vụ tên có nghĩa là hoạt động như một máy chủ cho một số ứng dụng khách hoặc các dịch vụ khác sử dụng dịch vụ này. Vì vậy, MS có thể muốn nắm bắt những điều cơ bản và muốn phân biệt rõ ràng giữa các dịch vụ và Ứng dụng. Vì vậy, các ứng dụng luôn bận rộn và để các dịch vụ phục vụ mục đích của chúng một cách im lặng. Trong khi cắt móng tay là có tại sao đi dao nhà bếp để cắt nils?