Beispiel #1
0
    def start(self, start_driver, driver_exists=False):
        # we are in native API mode so not starting the service/driver
        if not start_driver: return True
        self.use_existing_service = (win32serviceutil.QueryServiceStatus(
            SERVICE_NAME)[1] == win32service.SERVICE_RUNNING)

        if self.use_existing_service:
            self.driver_loaded = True
            if logger().DEBUG:
                logger().log("[helper] service '{}' already running".format(
                    SERVICE_NAME))
                logger().log(
                    "[helper] trying to connect to existing '{}' service...".
                    format(SERVICE_NAME))
        else:
            #if self.use_existing_service:
            #    _handle_error( "connecting to existing '{}' service failed (service is not running)".format(SERVICE_NAME) )
            try:
                win32serviceutil.StartService(SERVICE_NAME)
                win32serviceutil.WaitForServiceStatus(
                    SERVICE_NAME, win32service.SERVICE_RUNNING, 1)
                self.driver_loaded = True
                if logger().DEBUG:
                    logger().log(
                        "[helper] service '{}' started".format(SERVICE_NAME))
            except pywintypes.error as err:
                _handle_error(
                    "service '{}' didn't start: {} ({:d})".format(
                        SERVICE_NAME, err.args[2], err.args[0]), err.args[0])
        self.driverpath = win32serviceutil.LocateSpecificServiceExe(
            SERVICE_NAME)
        return True
Beispiel #2
0
 def SvcDoRun(self):
     servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
                           servicemanager.PYS_SERVICE_STARTED,
                           (self._svc_name_, ''))
     os.chdir(
         os.path.dirname(
             win32serviceutil.LocateSpecificServiceExe(self._svc_name_)))
     repeater.main()