1

如果这是一个愚蠢的问题,我深表歉意,但我正在学习并且我正在尝试使用我可以使用的所有文档并且我已经相当远了,但是我被困在最后一个领域。

问题

我正在尝试检测服务是否存在/正在运行,并根据结果更改标签以显示状态。- 我已经完成了状态检查,但是我不知道如何检查服务是否真的存在。

我正在使用ServiceController类。

当前子

Public Shared Sub detectExchange()

    Dim service As New ServiceController("Microsoft Exchange Service Host")

    If service.Status.Equals(ServiceControllerStatus.Running) Or service.Status.Equals(ServiceControllerStatus.StartPending) Then
        systemchecks.Label9.Text = "Detected - Running"

    If service.Status.Equals(ServiceControllerStatus.Stopped) Or service.Status.Equals(ServiceControllerStatus.StopPending) Then
        systemchecks.Label9.Text = "Detected - NOT RUNNING"
    End If


End Sub

到目前为止我的工作

我一直在寻找类似Exists我一直在玩弄字符串之类的东西If service.ServiceNameIf service.查看所有自动完成选项,但是我看不到任何东西可以检测到服务是否存在。

我考虑过使用该GetServices方法,将其存储,然后搜索我的服务名称并返回这样的结果?

我也尝试过厚脸皮,只需将以下内容添加到状态检查中

     If service.Status.Equals(ServiceControllerStatus.Running) Or service.Status.Equals(ServiceControllerStatus.StartPending) Then
        systemchecks.Label9.Text = "Detected - Running"
    Else
        systemchecks.Label9.Text = "NOT INSTALLED"
    End If

但我意识到这是一种糟糕的做法,不会返回任何值,但我只是想看看它是否会返回任何其他状态。

4

2 回答 2

0

所以我Try按照评论中的建议添加了一条语句,下面是我的工作代码。

Public Shared Sub detectExchange()

    Dim service As New ServiceController("Microsoft Exchange Service Host")
    Try
        If service.Status.Equals(ServiceControllerStatus.Running) Or service.Status.Equals(ServiceControllerStatus.StartPending) Then
            systemchecks.Label9.Text = "Detected - Running"
        End If
    Catch ex As Exception
        systemchecks.Label9.Text = "NOT INSTALLED"

    End Try

    If service.Status.Equals(ServiceControllerStatus.Running) Or service.Status.Equals(ServiceControllerStatus.StartPending) Then
        systemchecks.Label9.Text = "Detected - Running"
        systemchecks.Label9.Text = "Detected - NOT RUNNING"
    End If

End Sub
于 2014-04-12T13:45:47.703 回答
0

在这里,您可以检查服务是否已安装并获取其状态(如果存在):

        For Each Svc As ServiceController In ServiceController.GetServices
        Using Svc
            If Svc.ServiceName.Equals("MSExchangeServiceHost") Then 'The short name of "Microsoft Exchange Service Host"
                'The service is exist
                systemchecks.Label9.Text = Svc.Status.ToString()
                Exit For
            End If
        End Using
    Next
于 2014-04-12T17:24:29.033 回答