Esempio n. 1
0
 def getService(self):
     n = 1
     handle = self.makeHandle()
     service_list = win32service.EnumServicesStatusEx(handle)
     #pprint(service_list)
     service_dict = {}
     for i in service_list:
         service_dict.update({
             n: {
                 'name':
                 i.get('ServiceName'),
                 'status':
                 self.service_status.get(i.get('CurrentState')),
                 'pid':
                 i.get('ProcessId'),
                 'displayname':
                 i.get('DisplayName'),
                 'descriptions':
                 self.getDescription(i.get('ServiceName')),
                 'start_config':
                 self.ConfigDict(i.get('ServiceName')).get('start'),
             }
         })
         n += 1
     #debug(service_dict = service_dict)
     return service_dict
Esempio n. 2
0
def _build_srv_dict(hscm, machineName):

    # One node for each service name.
    dict_service_to_node = {}

    try:
        # Old versions of this library do not have this function.
        statuses = win32service.EnumServicesStatusEx(hscm, _type_filter, _state_filter)
        # li={'ControlsAccepted': 0, 'ServiceType': 32, 'DisplayName': 'WWAN AutoConfig', 'ServiceSpecificExitCode': 0,
        # 'ProcessId': 0, 'ServiceFlags': 0, 'CheckPoint': 0, 'ServiceName': 'WwanSvc', 'Win32ExitCode': 1077,
        # 'WaitHint': 0, 'CurrentState': 1},
        for lst in statuses:
            service_name = lst['ServiceName']
            lst["depends_in"] = []
            lst["depends_out"] = []

            dict_service_to_node[service_name] = lst

    # except AttributeError:
    except Exception:
        statuses = win32service.EnumServicesStatus(hscm, _type_filter, _state_filter)
        # li=('wuauserv', 'Windows Update', (32, 4, 453, 0, 0, 0, 0))
        for svc in statuses:
            logging.debug("service=%s", str(svc))
            # TODO: This must match the keys of EnumServicesStatusEx
            # lst = { "ServiceName":service_name, "DisplayName":descript, "CurrentState": status}
            lst = {"ServiceName":svc[0], "DisplayName":svc[1], "CurrentState": svc[2][1]}
            lst["depends_in"] = []
            lst["depends_out"] = []
            # A Win32 service status object is represented by a tuple
            # 0: serviceType
            # 1: serviceState
            # 2: controlsAccepted
            # 3: win32ExitCode
            # 4: serviceSpecificErrorCode
            # 5: checkPoint
            # 6: waitHint

            dict_service_to_node[svc[0]] = lst

            try:
                hsvc = win32service.OpenService(hscm, svc[0], win32service.SERVICE_CHANGE_CONFIG)

                # TODO: WHY DOING THIS ????? MAYBE FOR TESTING THE SERVICE PRESENCE ??

                #win32service.ChangeServiceConfig(hsvc, win32service.SERVICE_NO_CHANGE,
                #    win32service.SERVICE_DISABLED, win32service.SERVICE_NO_CHANGE, None, None,0,
                #    None,None,None,None)
                win32service.CloseServiceHandle(hsvc)
            except Exception:
                # Might receive "Access is denied" if this is on a remote machine.
                lst["ProcessId"] = 999999
                pass

    return dict_service_to_node
def QueryAllServicesStatus(includeDriverServices=False):
    returnValue = []
    servicesRaw = []
    serviceConfigManagerHandle = None
    try:
        serviceConfigManagerHandle = win32service.OpenSCManager(
            '', None, win32service.SC_MANAGER_ALL_ACCESS)
        if includeDriverServices:
            servicesRaw += win32service.EnumServicesStatusEx(
                serviceConfigManagerHandle, win32service.SERVICE_DRIVER)

        servicesRaw += win32service.EnumServicesStatusEx(
            serviceConfigManagerHandle)
        for rawService in servicesRaw:
            serviceStatus = ServiceStatusProcessEntity(**rawService)
            returnValue.append(serviceStatus.Status)
        return returnValue
    finally:
        if serviceConfigManagerHandle:
            win32service.CloseServiceHandle(serviceConfigManagerHandle)
Esempio n. 4
0
def _get_services():
    '''
    Returns a list of all services on the system.
    '''
    handle_scm = win32service.OpenSCManager(
        None, None, win32service.SC_MANAGER_ENUMERATE_SERVICE)

    try:
        services = win32service.EnumServicesStatusEx(handle_scm)
    except AttributeError:
        services = win32service.EnumServicesStatus(handle_scm)
    finally:
        win32service.CloseServiceHandle(handle_scm)

    return services
Esempio n. 5
0
def get_services(process_id):
    services_names = []

    hSCManager = ws.OpenSCManager(
        None, None, ws.SC_MANAGER_CONNECT | ws.SC_MANAGER_ENUMERATE_SERVICE)

    services = ws.EnumServicesStatusEx(hSCManager, ws.SERVICE_WIN32,
                                       ws.SERVICE_STATE_ALL, None,
                                       ws.SC_ENUM_PROCESS_INFO)

    for service in services:
        if service["ProcessId"] == process_id:
            services_names.append(service["ServiceName"])

    if len(services_names) == 0:
        return None

    services_names = sorted(services_names)

    return services_names