Нужен способ проверить состояние службы Windows программно

Вы можете проверить приведенный ниже код, чтобы изменить значение

<p id="changeName">Mark</p>
<button type="button" class="myevent">Button</button>

<script>
jQuery(function(){
    $('.myevent').on('click', function(){
       var name = "John Doe";
       $('#changeName').val(name);
    });
});
</script>

Это функция Jquery, пожалуйста, включите библиотеку jquery перед ее использованием.

11
задан Troy 2 December 2008 в 16:04
поделиться

6 ответов

вот то, что я должен был сделать. Это ужасно, но это работает красиво.

String STATE_PREFIX = "STATE              : ";

String s = runProcess("sc query \""+serviceName+"\"");
// check that the temp string contains the status prefix
int ix = s.indexOf(STATE_PREFIX);
if (ix >= 0) {
  // compare status number to one of the states
  String stateStr = s.substring(ix+STATE_PREFIX.length(), ix+STATE_PREFIX.length() + 1);
  int state = Integer.parseInt(stateStr);
  switch(state) {
    case (1): // service stopped
      break;
    case (4): // service started
      break;
   }
}

runProcess закрытый метод, который выполняет данную строку как процесс командной строки и возвращает получающийся вывод. Поскольку я сказал, ужасный, но работы.Надеюсь, это поможет.

15
ответ дан 3 December 2019 в 02:41
поделиться

Можно создать маленький VBS on-th-fly, запустить его и получить его код возврата.

import java.io.File;
import java.io.FileWriter;

public class VBSUtils {
  private VBSUtils() {  }

  public static boolean isServiceRunning(String serviceName) {
    try {
        File file = File.createTempFile("realhowto",".vbs");
        file.deleteOnExit();
        FileWriter fw = new java.io.FileWriter(file);

        String vbs = "Set sh = CreateObject(\"Shell.Application\") \n"
                   + "If sh.IsServiceRunning(\""+ serviceName +"\") Then \n"
                   + "   wscript.Quit(1) \n"
                   + "End If \n"
                   + "wscript.Quit(0) \n";
        fw.write(vbs);
        fw.close();
        Process p = Runtime.getRuntime().exec("wscript " + file.getPath());
        p.waitFor();
        return (p.exitValue() == 1);
    }
    catch(Exception e){
        e.printStackTrace();
    }
    return false;
  }


  public static void main(String[] args){
    //
    // DEMO
    //
    String result = "";
    msgBox("Check if service 'Themes' is running (should be yes)");
    result = isServiceRunning("Themes") ? "" : " NOT ";
    msgBox("service 'Themes' is " + result + " running ");

    msgBox("Check if service 'foo' is running (should be no)");
    result = isServiceRunning("foo") ? "" : " NOT ";
    msgBox("service 'foo' is " + result + " running ");
  }

  public static void msgBox(String msg) {
    javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
       null, msg, "VBSUtils", javax.swing.JOptionPane.DEFAULT_OPTION);
  }
}
6
ответ дан 3 December 2019 в 02:41
поделиться

У меня была некоторая удача в прошлом с Сервисной Оберткой Java. В зависимости от Вашей ситуации Вы, возможно, должны заплатить для использования ее. Но это предлагает чистое решение, которое поддерживает Java и могло использоваться в среде InstallAnywhere с (я думаю), мало проблемы. Это также позволит Вам услугам по поддержке на полях Unix также.

http://wrapper.tanukisoftware.org/doc/english/download.jsp

2
ответ дан 3 December 2019 в 02:41
поделиться

Во время запуска создайте файл с File.deleteOnExit ().

Проверьте на существование файла в Ваших сценариях.

0
ответ дан 3 December 2019 в 02:41
поделиться

Выстрел в темноте, но смотрит на Вашу Установку Где угодно документация Java.

А именно,

/javadoc/com/installshield/wizard/platform/win32/Win32Service.html

Класс:

com.installshield.wizard.platform.win32
Interface Win32Service

All Superinterfaces:
    Service 

Метод:

public NTServiceStatus queryNTServiceStatus(String name)
                                     throws ServiceException

    Calls the Win32 QueryServiceStatus to retrieve the status of the specified service. See the Win32 documentation for this API for more information.

    Parameters:
        name - The internal name of the service. 
    Throws:
        ServiceException
1
ответ дан 3 December 2019 в 02:41
поделиться

Я имел дело с установщиками в течение многих лет, и прием должен создать Ваш собственный EXE и назвать его на установке. Это предлагает хорошую гибкость как отображение точных сообщений об ошибках в конечном счете, ошибка происходит, и имейте основанные на успехе возвращаемые значения, таким образом, Ваш установщик знает о том, что произошло.

Вот то, как запустить, остановите и запросите состояния для сервисов окон (C++): http://msdn.microsoft.com/en-us/library/ms684941 (По сравнению с 85) .aspx (VB и C# предлагают подобные функции),

3
ответ дан 3 December 2019 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: