Anzahl aktive Dienste

spirit

Erfahrenes Mitglied
Hallo

Ich habe mal wieder ein kleines Problem. Ich würde gerne feststellen wie viele Dienste auf meinem Rechner aktiv sind. Als Ausgabe hätte ich gerne eine Anzahl oder eine kleine Form mit der Auflistung. Was ich bisher Googeln konnte, bezog sich immer auf die Abfrage ob ein namentlich anzugebender Dienst läuft. In meinem Fall ist es mir egal welcher Dienst es ist. Wie schon gesagt, als Ausgabe reicht mir mindestens ein Zahl. Hat da jemand eine Idee

Danke im voraus
 
Suchen nach vb und wmi

http://www.computerperformance.co.u...ript_to_List_the_Services_running_on_Computer

Umgemünzt für VB6:
Visual Basic:
Public Sub testWmiScript()

    ' Service.vbs
    ' Sample script to List services
    ' www.computerperformance.co.uk/
    ' Author Guy Thomas http://computerperformance.co.uk/
    ' Version 1.5 December 2005
    ' -------------------------------------------------------'
    'Umgeschrieben als Beispiel für VB6 von Stefan Erb 01.12.2009
    
    Dim objWMIService, objItem, objService, strServiceList    Dim colListOfServices, strComputer, strService
    
    'On Error Resume Next
    
    ' ---------------------------------------------------------
    ' Pure WMI commands
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service ")
    
    'Count the Services
    Debug.Print colListOfServices.Count
    
    ' WMI and VBScript loop
    For Each objService In colListOfServices
        Debug.Print objService.Name & vbTab & objService.DisplayName
    Next


End Sub

Erklärungen dazu findest du unter dem angegeben Link
 
Zuletzt bearbeitet:
Hallo

Erstmal Dnake für deine schnelle Antwort. Leider werden zwar die Dienste angezeigt, jedoch unabhängig of diese gestartet oder nicht gestartet sind. Gibt es in dem Select Befehl vieleicht noch eine Option die den Status des Dienstes abfragt?

Danke im voraus
 
Hallo

Habe die Stelle gefunden in der der Status des Dienstes steckt. Es muss nur die Zeile:
Code:
Debug.Print objService.Name & vbTab  & objService.DisplayName
auf
Code:
Debug.Print objService.Name & vbTab & objService.State & vbTab & objService.DisplayName
geändert werden.
Somit kannich dann in einer If Schleife die Objektvariable objService.State auf den Status 'running' prüfen und einen Zähler dahinterschalten. Schon habe ich meine gewünschte Anzahl an laufenden Diensten.

Bis später
 
Hallo

Nach genauerer Betrachtung muss ich feststellen, das lt. services.msc 53 Dienste gestartet sind. Aus dem o.a. Schript bekomme ich lediglich nur 27 laufende Dienste angezeigt. Kann es sein das nich alle Dienste mit diesem Code ausgelesen werden können

Vilen Dank im voraus
 
Da hasse ;-)

Code:
Option Explicit

Dim objWMIService, objItem, objService, strServiceList
Dim colListOfServices, strComputer, strService
Dim strServiceName, strDisplayname, strServiceState As String
Dim sCount as integer

Public Sub testWmiScript()
    
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service ")

    For Each objService In colListOfServices
        
        If UCase(Left(objService.Name, 1)) > "N" Then
            If objService.State = "Running" Then
                ListView1.ListItems.Add , , objService.Name
                ListView1.ListItems(sCount).ListSubItems.Add , , objService.DisplayName
                ListView1.ListItems(sCount).ListSubItems.Add , , objService.State
                Label2.Caption = sCount
                sCount = sCount + 1
            End If
        End If
    Next
        
End Sub

Private Sub cmdExit_Click()
    End
End Sub
 
Visual Basic:
If UCase(Left(objService.Name, 1)) > "N" Then
...
END IF

entferne diese if-Schleife, denn sie gibt nur Services aus, deren namen mit einem Buchstaben > N beginnt (also N-Z)
 

Neue Beiträge

Zurück