道歉,如果这是一个愚蠢的问题,但我正在学习,并且我试图使用我掌握的所有文档而且我已经相当远,但是我被卡住了在最后一个区域。
问题
我试图检测服务是否存在/正在运行并依赖于结果更改标签以显示状态。 - 我已经检查了状态,但是我无法确定如何检查服务是否确实存在。
我正在使用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.ServiceName
和If service.
这样的字符串来查看所有自动完成选项,但在那里&# 39;我所能看到的任何东西都无法检测到服务是否存在。
我考虑过使用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
但是我意识到这是一种可怕的方式,并且不会返回任何价值,但我只是想知道它是否会返回任何其他状态。
答案 0 :(得分: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
答案 1 :(得分: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