Trong services.msc> Hành động> Thuộc tính> Đăng nhập> Cho phép dịch vụ tương tác với máy tính để bàn, tôi đã bật dịch vụ của mình để tương tác với máy tính để bàn. điều đó có chính xác? Làm thế nào tôi có thể sử dụng nó để phát âm thanh (MP3, WAV, v.v.) từ dịch vụ của tôi?Cho phép dịch vụ tương tác với máy tính để bàn trong Windows
Trả lời
Bởi vì dịch vụ không chạy trong bối cảnh của một phiên người dùng, bạn tạo một ứng dụng thứ hai để tương tác với dịch vụ.
Ví dụ: máy chủ Microsoft SQL có công cụ giám sát. Ứng dụng này chạy trong phiên người dùng và kết nối với dịch vụ cung cấp cho bạn thông tin về việc liệu dịch vụ có đang chạy hay không và cho phép bạn dừng và khởi động dịch vụ cơ sở dữ liệu.
Vì ứng dụng đó chạy trong phiên người dùng, bạn có thể tương tác với máy tính để bàn thông qua ứng dụng đó.
Tôi sẽ thực hiện một số quyền tự do ở đây khi cố gắng diễn giải câu hỏi của bạn từ các từ khóa. Trong tương lai, hãy dành nhiều thời gian hơn để viết các câu hỏi của bạn để chúng có ý nghĩa với người khác đang cố đọc và hiểu chúng.
Có hộp kiểm trong tab Đăng nhập trong cửa sổ thuộc tính cho dịch vụ Windows được gọi là "Cho phép dịch vụ tương tác với máy tính để bàn". Nếu bạn đang cố gắng kiểm tra hộp đó theo chương trình, bạn cần chỉ định cờ SERVICE_INTERACTIVE_PROCESS
khi bạn tạo dịch vụ của mình bằng API CreateService
. (Xem MSDN).
Tuy nhiên, lưu ý rằng như của Windows Vista, dịch vụ Nghiêm cấm tương tác trực tiếp với một người dùng:
Chú ý: Dịch vụ không thể trực tiếp tương tác với người dùng như của Windows Vista. Do đó, các kỹ thuật được đề cập trong phần có tiêu đề Sử dụng Dịch vụ tương tác không nên được sử dụng trong mã mới.
Tính năng "này" bị hỏng và thông thường bạn cho rằng bạn không nên dựa vào nó. Dịch vụ không có nghĩa là cung cấp giao diện người dùng hoặc cho phép bất kỳ loại tương tác trực tiếp nào của người dùng. Microsoft đã cảnh báo rằng tính năng này có thể tránh được kể từ những ngày đầu của Windows NT vì những rủi ro bảo mật có thể xảy ra. Larry Osterman lập luận tại sao nó là always a bad idea. Và anh ta là not the only one.
Có là một số possibleworkarounds, tuy nhiên, nếu bạn hoàn toàn phải có chức năng này. Nhưng tôi khuyên bạn nên xem xét sự cần thiết của nó một cách cẩn thận và khám phá các thiết kế thay thế cho dịch vụ của bạn.
+1 Viết tuyệt vời, đặc biệt là xem xét việc thiếu thông tin từ OP – mandreko
Bạn cần thêm serviceinstaller và viết xuống mã bên dưới trong sự kiện cam kết của serviceinstaller.
using System.Management;
using System.ComponentModel;
using System.Configuration.Install;
private void serviceInstaller1_Committed(object sender, InstallEventArgs e)
{
ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new ManagementScope(@"root\CIMV2", coOptions);
mgmtScope.Connect();
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='" + serviceInstaller1.ServiceName + "'");
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);
}
Bạn có thể giải thích cách mã này sẽ kích hoạt 'tương tác với dịch vụ' không? – Newbee
wmiService = new ManagementObject("
Win32_Service.Name='" + serviceInstaller1.ServiceName + "'");
trên máy tính 64 bit?
Làm cách nào để sử dụng dòng mã bạn đã cung cấp để cho phép dịch vụ tương tác với máy tính để bàn? Bạn có thể dành nhiều thời gian hơn để viết ra câu trả lời của bạn để mọi người có thể hiểu chúng. – mandreko
- 1. Cách chạy tác vụ Windows 2008 từ bộ lập lịch với "tương tác với máy tính để bàn"
- 2. Không thể khởi động ứng dụng dành cho máy tính để bàn từ dịch vụ Windows trên Windows 7
- 3. Giao tiếp giữa dịch vụ cửa sổ và ứng dụng dành cho máy tính để bàn
- 4. Nhận tên máy tính trong dịch vụ Windows?
- 5. Cho phép Dịch vụ Windows được cấu hình
- 6. Tương đương Adsense cho ứng dụng dành cho máy tính để bàn?
- 7. Không tập trung, nhưng cho phép tương tác?
- 8. Scala cho máy tính để bàn
- 9. Cách tốt nhất cho dịch vụ .Net Windows để báo cáo lỗi cho người dùng
- 10. Trình lập lịch biểu tác vụ Windows để thực hiện các tác vụ trong vài giây
- 11. Dấu nhắc lệnh tương tác dưới dạng MẠNG DỊCH VỤ
- 12. Cách chạy tác vụ khi dịch vụ windows khởi động?
- 13. MVC.NET cho máy tính để bàn
- 14. Đặt hình nền cho máy tính để bàn với JavaScript
- 15. Sự khác biệt giữa ứng dụng dành cho máy tính để bàn và ứng dụng không phải máy tính để bàn trong cửa sổ
- 16. Thanh cuộn kiểu thanh dành cho máy tính bảng Gmail với thanh tác vụ trong suốt
- 17. Dịch vụ môi giới và WCF khả năng tương tác
- 18. Theo dõi sử dụng cho các ứng dụng máy tính để bàn Windows
- 19. Khung phát triển máy tính để bàn Java tương tự như Android?
- 20. Sử dụng C# để tương tác với Windows Update
- 21. BIRT trong ứng dụng dành cho máy tính để bàn
- 22. FileSystemWatcher gây ra sự cố cho máy tính để bàn
- 23. Cài đặt tính năng trong tác vụ khởi động Azure cho Windows Server 2012
- 24. OpenGL | ES trên máy tính để bàn
- 25. Bắt đầu một dịch vụ windows và khởi động cmd
- 26. Nhận tên người dùng Windows đã đăng nhập được kết hợp với máy tính để bàn
- 27. Windows tương đương với OS X Keychain?
- 28. Dịch vụ tương tác và đối tượng yêu cầu tương tác
- 29. máy chủ http node.js http dưới dạng dịch vụ Windows
- 30. Giấy phép cho ứng dụng C# trên máy tính để bàn
tôi có hẹn giờ và thông báo trong cửa sổ dịch vụ nơi cảnh báo với thông báo trong taskabar Trình đơn ngữ cảnh không bật – user514989
Tôi có một ví dụ điển hình về lý do tại sao tôi cần bật tính năng này. Dịch vụ của tôi có thể thực thi các kịch bản người dùng tùy chỉnh. Đôi khi các ứng dụng trong các tập lệnh này có giao diện người dùng ứng dụng và không có phiên bản giao diện điều khiển tương ứng. Nếu không có tùy chọn này được kích hoạt, các ứng dụng không thể khởi động và các kịch bản cơ bản không thành công. Không phải là cá nhân tôi đã mã hóa dịch vụ theo cách mà tôi yêu cầu tùy chọn, đây là trường hợp sử dụng chính hãng để bật tính năng này. – BrutalDev