我在自动启动和停止服务时遇到了一个小问题。当我打开services.msc
并查看服务列表时,它们都有名称。但是,当我运行此代码时:
Dim objService As Object
Dim objSet As Object
IsServiceRunning = False
Set objSet = GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_Service")
For Each objService In objSet
If (UCase(strServiceName) = UCase(objService.Name)) And (UCase(objService.State) = UCase("Running")) Then
IsServiceRunning = True
End If
Next
该objService.Name
值与列表中的名称不同。例如,“计算机浏览器”就是“浏览器”,“分布式文件系统”就是“dfs”,“Net Logon”就是“netlogon”。有没有办法从这个 objService 对象中提取这些服务的完整、更长的名称?我可以解决这个问题,但为了代码清晰起见,我宁愿使用相同的值来确定服务是否正在运行、进行NET START
或NET STOP
命令行调用以及日志记录。