예제 #1
0
  /**
   * Ask the ServiceControlManager to start the service.
   *
   * @return true on success
   */
  public boolean start() {
    Advapi32 advapi32;
    SC_HANDLE serviceManager, service;
    boolean success = false;

    advapi32 = Advapi32.INSTANCE;

    serviceManager = openServiceControlManager(null, WinNT.GENERIC_EXECUTE);

    if (serviceManager != null) {
      service = advapi32.OpenService(serviceManager, serviceName, WinNT.GENERIC_EXECUTE);

      if (service != null) {
        success = advapi32.StartService(service, 0, null);
        advapi32.CloseServiceHandle(service);
      }
      advapi32.CloseServiceHandle(serviceManager);
    }

    return (success);
  }