Tôi đang viết một ứng dụng trong C# cần chạy như một dịch vụ nhưng cũng có tương tác người dùng. Tôi hiểu rằng các dịch vụ không có giao diện người dùng, vì vậy tôi đã chia chương trình của tôi thành một ứng dụng biểu mẫu cửa sổ và một dịch vụ có thể giao tiếp với nhau.C# Chạy ứng dụng biểu mẫu Windows từ dịch vụ (và trong Vista)
Sự cố tôi gặp phải là tôi cần dịch vụ để đảm bảo ứng dụng biểu mẫu cửa sổ luôn chạy và khởi động lại ứng dụng nếu không. Tôi có thể phát hiện xem nó có đang chạy hay không và khởi động lại nó bằng mã sau trên Windows 2000/XP:
System.Diagnostics.Process.Start("ExePath");
nhưng trên Vista, nó chạy quy trình mới dưới dạng quy trình Local/System không thể nhìn thấy người dùng. Có ai đó quanh đây không? Có cách nào để phát hiện người dùng nào hiện đang đăng nhập và chạy quy trình mới với người dùng đó không? Tôi không cần tính đến chuyển đổi người dùng nhanh tại thời điểm này. Một cái gì đó - bất cứ điều gì - cơ bản sẽ đủ.
Tôi sẽ biết ơn bạn về mọi trợ giúp hoặc mẹo bạn có về chủ đề này.
Tôi cần làm rõ rằng tôi đang đặt tùy chọn "Cho phép dịch vụ tương tác với máy tính để bàn" khi dịch vụ được cài đặt. Đây là những gì cho phép nó hoạt động trên 2000/XP. Tuy nhiên, Vista vẫn có vấn đề nói trên.
Tôi có thiếu gì đó không? Nếu bạn có một dịch vụ luôn chạy ... tại sao việc cửa sổ ứng dụng của bạn chạy không quan trọng? – bobwienholt
Vì tôi cần một cách để dịch vụ liên lạc trực tiếp với người dùng. Có rất nhiều lý do cho điều này, nhưng ví dụ cơ bản nhất là để thông báo nâng cấp. –
Tôi với những người khác ở đây ... Tôi nghi ngờ rằng bạn đang sử dụng phương pháp sai cho bất kỳ vấn đề nào bạn đang cố giải quyết. Nếu bạn * phải * có giao diện người dùng thì có thể bạn không nên sử dụng mô hình dịch vụ. Có lẽ cái gì đó nằm trong khay hệ thống ...? –