Service VBScript-在WinXP(但不是Win7)中为服务返回未知的StartMode

Service VBScript-在WinXP(但不是Win7)中为服务返回未知的StartMode,service,vbscript,Service,Vbscript,啊…太沮丧了…希望这里有人能帮忙 有一个名为ScreenConnect的软件产品,允许您在自己的服务器上安装它,并通过此安装设置有人参与和无人参与的远程访问会话。我在我的很多客户机上都使用这个,但是在我需要多次访问的客户机上设置无人值守的安装要容易得多。然而,一些客户希望控制我何时可以远程登录,何时不能远程登录,而且由于软件产品还没有内置此功能,我想我应该在他们的桌面上创建两个vbscript文件——一个打开时关闭服务(反之亦然),另一个将服务的启动类型更改为自动(如果设置为手动),反之亦然。我

啊…太沮丧了…希望这里有人能帮忙

有一个名为ScreenConnect的软件产品,允许您在自己的服务器上安装它,并通过此安装设置有人参与和无人参与的远程访问会话。我在我的很多客户机上都使用这个,但是在我需要多次访问的客户机上设置无人值守的安装要容易得多。然而,一些客户希望控制我何时可以远程登录,何时不能远程登录,而且由于软件产品还没有内置此功能,我想我应该在他们的桌面上创建两个vbscript文件——一个打开时关闭服务(反之亦然),另一个将服务的启动类型更改为自动(如果设置为手动),反之亦然。我能够非常轻松地启动/停止服务vbscript文件:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRunningServices = objWMIService.ExecQuery _
    ("select State from Win32_Service where Name LIKE '%ScreenConnect%'")

For Each objService in colRunningServices
Wscript.Echo "State: " & objService.State
    If objService.State <> "Running" Then
        errReturn = objService.StartService()
    Wscript.Echo "FalconRemote Started"
    Else
    errReturn = objService.StopService()
    Wscript.Echo "FalconRemote Stopped"
    End If
Next
然而,它返回“未知”而不是“手动”、“禁用”或“自动”等可接受的值-我不知道为什么它返回“未知”

我已尝试将第五行更改为:

("select * from Win32_Service where Name LIKE '%ScreenConnect%'")
还是这个

("select StartMode from Win32_Service where DisplayName LIKE '%ScreenConnect%'")
但似乎没有效果

如果我在上面的脚本中将ScreenConnect更改为另一个服务,比如helpsvc(使用Name)或Help and Support(使用DisplayName),它会工作!它在Windows7机器上运行良好。为什么它不能在Windows XP机器上工作?有什么想法吗????我试着安装Mozilla Firefox 20(带有Mozilla维护服务),它可以很好地读取该服务的startmode(它没有内置到WinXP中),那么为什么它不读取该服务的startmode呢

非常感谢您的帮助

谢谢

  • 马克

我最近遇到了这个问题

我不确定windows服务是如何进入这种状态的,但windows服务似乎处于“未知”状态

例如,可能是文件系统上不再存在可执行文件,但windows服务(注册表)项仍然(部分)存在

在任何情况下,只需删除windows服务条目即可解决问题

例如,可以使用以下命令行删除windows服务:

sc delete "ScreenConnect service name"

这项服务有什么特别之处吗?例如,它作为什么帐户运行?如果您使用
ChangeStartMode
而不考虑当前的启动模式会怎么样?Ilya-我对没有尽快响应表示歉意-我想当我收到回复时会收到某种电子邮件通知(但没有-如果这是一项提供的功能,我想如何启用该功能)?Oops-我点击回车键,它发表了我的评论,而不是仅仅下移一行-无论如何,为了回答您的问题:它作为WinXP机器上的本地系统帐户运行,如果我使用
ChangeStartMode
,它允许我更改服务的启动模式-它似乎无法检索服务的启动模式以运行IF-THEN-ELSE语句…您确定错误不在脚本中吗?您发布的第一个代码片段检查
State
属性,而不是
StartMode
属性。第二个代码段查询了
StartMode
属性,但随后尝试回显
PathName
属性。我的错误-在我最初发布的第二个代码段中,在倒数第二行中,
PathName
实际上应该是
StartMode
-我最初就是这样做的,但在我发布之前的所有测试中,我必须切换它,然后在发布时忘记将其切换回来。无论如何,即使有了这样的更改,代码在WinXP上也不起作用(它仍然报告未知的启动模式),而在Win7上,代码工作正常,并报告正确的启动模式……还有其他想法/建议吗?谢谢
sc delete "ScreenConnect service name"