Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
928to932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
928to932
928to932
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Windowsdienste abfragen und beenden

Windowsdienste abfragen und beenden
03.12.2007 12:01:37
Stefan
Hallo Zusammen,
gibt es eine Möglichkeit die laufenden Windowsdienste mit VBA abzufragen, und ggf. einzelne
daraus zu beenden? Für ein Codebeispiel wäre ich dankbar.
Danke
Gruß Stefan

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Windowsdienste abfragen und beenden
03.12.2007 13:08:02
Ramses
Hallo
hier mal ein Ansatz für EXCEL

Function Kill_Excel()
Dim myWmi As Object, getProc As Variant
Dim myProcArr As Variant, tarProc As Variant
Set myWmi = GetObject("winmgmts:")
getProc = "select * from win32_process where name='excel.exe'"
Set myProcArr = myWmi.ExecQuery(getProc)
For Each tarProc In myProcArr
Debug.Print "Erkannter Prozess: " & tarProc.name
'Zum Beenden das Hochkomma vor der
'nächsten Zeile entfernen
'tarProc.Terminate 0
Next
End Function


Gruss Rainer

AW: Windowsdienste abfragen und beenden
03.12.2007 13:57:00
Stefan
Hallo Rainer,
erstmal vielen Dank. Soweit sogut, mit der Excel.exe klappt es auch. Wenn ich allerdings den Indexdienst von Windows beenden will, macht er gar nix. Gibt es da vielleicht eine Besonderheit, wenn es sich um einen Windowsdienst handelt?
Gruß Stefan

Anzeige
AW: Windowsdienste abfragen und beenden
03.12.2007 22:44:00
Ramses
Hallo
Probier mal diese Varianten. Die sind für VBA angepasst.
'Start Code Sequenz
Sub List_Services_in_Table()
    'by Ramses
    Dim objWMIService As Object, objItem As Object
    Dim objService As Object, strServiceList As Variant
    Dim serviceArr As Variant, myRow As Long
    Dim searchService As String
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set serviceArr = objWMIService.ExecQuery("Select * from Win32_Service")
    myRow = 2
    'Possible Service Methodes
    '.Name
    '.State
    '.StartMode
    '... more ?
    Range("A1:G65536").ClearContents
    Cells(1, 1) = "Service Name"
    Cells(1, 2) = "State"
    Cells(1, 3) = "Start Mode"
    For Each objService In serviceArr
        With objService
            Cells(myRow, 1) = .name
            Cells(myRow, 2) = .State
            Cells(myRow, 3) = .startMode
        End With
        myRow = myRow + 1
    Next
End Sub

Sub Run_Process_Stop()
    Dim prcString As String
    prcString = "MySql"
    MsgBox "Service: " & prcString & " wurde gestoppt:" & Kill_Service(prcString)
End Sub

Function Stop_Service(termService As String, tarComp As String) As Boolean
    'by Ramses
    'tarComp ist der übergebene Computername, auf dem der entsprechende Dienst gestoppt werden soll
    '"." bedeutet den lokalen Computer
    'Ansonsten den entsprechenden Computernamen mit übergeben
    Dim objWMIService As Object, objItem As Object
    Dim objService As Object, strServiceList As Variant
    Dim serviceArr As Variant
    Dim searchService As String
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & tarComp & "\root\cimv2")
    Set serviceArr = objWMIService.ExecQuery("Select * from Win32_Service ")
    For Each objService In serviceArr
        If UCase(objService.name) = UCase(termService) Then
            'Entgegen WScript darf unter VBA keine () verwendet werden
            objService.stopservice
            Kill_Service = True
            Exit Function
        End If
    Next
    MsgBox strServiceList
End Function



Sub Run_Process_Start()
    Dim prcString As String
    prcString = "MySql"
    MsgBox "Service: " & prcString & " wurde gestartet:" & Start_Service(prcString, "'")
End Sub

Function Start_Service(termService As String, tarComp As String) As Boolean
    'by Ramses
    'tarComp ist der übergebene Computername, auf dem der entsprechende Dienst gestartet werden soll
    '"." bedeutet den lokalen Computer
    'Ansonsten den entsprechenden Computernamen mit übergeben
    Dim objWMIService As Object, objItem As Object
    Dim objService As Object, strServiceList As Variant
    Dim serviceArr As Variant
    Dim searchService As String
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & tarComp & "\root\cimv2")
    Set serviceArr = objWMIService.ExecQuery("Select * from Win32_Service ")
    For Each objService In serviceArr
        If UCase(objService.name) = UCase(termService) Then
            'Entgegen WScript darf unter VBA keine () verwendet werden
            objService.startservice
            Start_Service = True
            Exit Function
        End If
    Next
End Function
'Ende Codesequenz
'*******************************************

Gruss Rainer

Anzeige
AW: Windowsdienste abfragen und beenden
04.12.2007 08:45:00
Stefan
Hallo Rainer,
danke für das gute Codebeispiel. Ich vermisse allerdings die Funktion "Kill_Service(prcString)" welche
Du aufrufst. Oder sehe ich den Wald vor lauter Bäumen nicht?! Das ermitteln der Services klappt
schon gut.
Bitte nochmals um eine kleine Rückmeldung.
Danke

AW: Windowsdienste abfragen und beenden
04.12.2007 08:55:04
Stefan
Sorry, jetzt hat es geklappt. Dienste läßt sich jetzt wunderbar beenden. Danke nochmals für die Hilfe.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige