2011-03-22 8 views
5

जावा प्रोग्राम से विंडोज सेवाओं की स्थिति की जांच कैसे करें?जावा एप्लिकेशन से विंडोज सेवा की स्थिति पाएं?

+1

संभव डुप्लिकेट वहाँ की स्थिति जानने के लिए कोई तरीका है, जावा में, एक विंडोज़ सेवा?] (http://stackoverflow.com/questions/127299/is-there-any-way-in-java-to-check-on-the-status-of-a- विन्डोज़- सेवा) –

+0

@ पीटर टोरोक: यह प्रश्न का एक संभावित डुप्लिकेट हो सकता है, लेकिन उस प्रश्न के उत्तर में से कोई भी अपेक्षाकृत सरल प्रोसेस बिल्डर-आधारित उत्तर पर मैंने स्पर्श नहीं किया है। –

उत्तर

2

कम से कम आप sc query service-name कमांड के साथ cmd.exe प्रक्रिया लॉन्च करने और स्थिति निर्धारित करने के लिए आउटपुट को पार्स करने में सक्षम होना चाहिए। सुंदर नहीं है, लेकिन विंडोज सेवा प्रबंधक के लिए जावा एपीआई की कमी यह एक व्यवहार्य विकल्प होगा।

संपादित करें - java.lang.ProcessBuilder के लिए जावाडोक पढ़ें, जो आपको बाहरी कमांड निष्पादित करने की अनुमति देगा। आपको शायद रीडायरेक्ट एररस्ट्रीम प्रॉपर्टी सेट करना चाहिए ताकि आपको दो इनपुट स्ट्रीम (stdout और stderr) को संभालने की आवश्यकता न हो, जो एक बहुत ही सरल डिज़ाइन के लिए बनाते हैं।

+0

मैंने इस एससी क्वेरी को गुगल किया है, और यह ठीक काम करता है। क्या आप कृपया मुझे बताएं कि मैं जावा से यह क्वेरी कैसे चला सकता हूं? –

+0

मैंने एपीआई में एक पॉइंटर शामिल करने के लिए अपना उत्तर संपादित किया है, आपको इसे करने की आवश्यकता होगी। –

9
निम्न उदाहरण पर

आप कैसे आप windws सेवा स्थिति देख सकते हैं पा सकते हैं और आप कुछ कार्रवाई करने के लिए कर सकते हैं पार्स

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) { } 



    } 
} 
की [
+0

महान उत्तर waleed .. – bluelurker

+0

उपरोक्त कोड कुछ भी नहीं देता है। डीबग होने पर, यह कहता है कि पहुंच अस्वीकार और शून्य है। –

संबंधित मुद्दे