Cách kiểm tra trạng thái của các dịch vụ windows từ một chương trình java?Tìm trạng thái dịch vụ Windows từ ứng dụng Java?
Trả lời
Ít nhất bạn cũng có thể khởi chạy quy trình cmd.exe bằng lệnh sc query service-name
và phân tích đầu ra để xác định trạng thái. Không đẹp, nhưng thiếu một API Java cho trình quản lý dịch vụ Windows, đây sẽ là một giải pháp thay thế khả thi.
EDIT - Đọc Javadoc cho java.lang.ProcessBuilder, cho phép bạn thực thi lệnh bên ngoài. Có lẽ bạn nên đặt thuộc tính chuyển hướng ErrorStream để bạn không phải xử lý hai luồng đầu vào (stdout và stderr), làm cho thiết kế đơn giản hơn nhiều.
tôi đã googled truy vấn này sc, và hoạt động của nó fine.can bạn hãy cho tôi biết rằng làm thế nào tôi có thể chạy truy vấn này từ java? –
Tôi đã chỉnh sửa câu trả lời của mình để bao gồm một con trỏ tới API bạn sẽ cần thực hiện việc này. –
trên ví dụ sau đây bạn có thể tìm thấy làm thế nào bạn có thể kiểm tra trạng thái dịch vụ Windws và bạn có thể phân tích cú pháp để làm hành động nhất định
import java.util.*;
import java.sql.*;
import java.io.*;
import java.text.*;
public class doscmd
{
public static void main(String args[])
{
try
{
Process p=Runtime.getRuntime().exec("sc query browser");
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null)
{
if(line.trim().startsWith("STATE"))
{
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("1"))
System.out.println("Stopped");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("2"))
System.out.println("Startting....");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("3"))
System.out.println("Stopping....");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("4"))
System.out.println("Running");
}
line=reader.readLine();
}
}
catch(IOException e1) { }
}
}
câu trả lời hay được trả lời .. – bluelurker
Mã trên không trả về gì cả. Khi gỡ lỗi, nó nói truy cập bị từ chối và null. –
- 1. Lệnh Windows để nhận trạng thái dịch vụ?
- 2. Dịch vụ web là phi trạng thái?
- 3. bắt đầu dịch vụ windows từ java
- 4. Cách tìm trạng thái giao dịch
- 5. Trạng thái của Dịch vụ quản trị triển khai OSGi
- 6. Cách thu thập từng Tên dịch vụ và Trạng thái của nó trong Windows?
- 7. Dịch vụ Góc có nên có trạng thái không?
- 8. Các dịch vụ web trạng thái không quốc tịch
- 9. Có cách nào, trong java, để kiểm tra tình trạng của một dịch vụ windows?
- 10. Lưu trạng thái ứng dụng trong Node.js
- 11. Cách tạo dịch vụ windows từ java jar?
- 12. Android - lưu trạng thái ứng dụng
- 13. Kiểm tra trạng thái dịch vụ chạy trên máy tính từ xa bằng C#
- 14. Kiểm tra đơn vị trạng thái cho Windows Phone
- 15. Trạng thái thanh tác vụ của Windows 7 với mã tối thiểu
- 16. Android phát hiện trạng thái cảm ứng từ bất kỳ ứng dụng nào
- 17. Dịch vụ WCF và Dịch vụ Windows
- 18. Ứng dụng bận sẽ dẫn đến trạng thái "Không phản hồi" trên Windows 7 - WM_UPDATE
- 19. Trạng thái lưu trữ trong Java
- 20. Tìm tất cả việc sử dụng trạng thái phiên
- 21. Trạng thái giao dịch trong JDBC
- 22. trạng thái phiên, trạng thái ứng dụng trong vòng đời trang?
- 23. Cách tìm các ứng dụng đang chạy đang ở trạng thái thu nhỏ bằng cách sử dụng java?
- 24. Việc cập nhật Thông báo có xóa trạng thái tiền cảnh của Dịch vụ không?
- 25. Cách gọi dịch vụ windows từ asp.net
- 26. gọi Dịch vụ an toàn từ Java
- 27. Android: Lưu trạng thái dụ khi ứng dụng được đóng
- 28. Sử dụng Thread.Sleep() trong Dịch vụ Windows
- 29. C# Chạy ứng dụng biểu mẫu Windows từ dịch vụ (và trong Vista)
- 30. Lỗi khi tải miền ứng dụng. (Ngoại lệ từ HRESULT: 0x80131015), bên trong Dịch vụ Windows
thể trùng lặp của [Có cách nào, trong java, để kiểm tra về tình hình một dịch vụ cửa sổ?] (http://stackoverflow.com/questions/127299/is-there-any-way-in-java-to-check-on-the-status-of-a-windows-service) –
@ Péter Török: Đây có thể là một câu hỏi có thể có của câu hỏi, nhưng không có câu trả lời nào cho câu hỏi đó được đề cập đến trong câu trả lời dựa trên ProcessBuilder tương đối đơn giản mà tôi đã cung cấp. –