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