远程服务查询(sc.exe查询)失败与“访问被拒绝”为一个服务,而不是其他人

我试图远程卸载特定的服务,但得到着名的“失败5:访问被拒绝”。 信息。 我减less了testing用例的运行

sc \\remotemachine.domain.local query "flexnet licensing service" 

我得到了

 [SC] EnumQueryServicesStatus:OpenService FAILED 5: Access is denied. 

有趣的是,我可以远程查询来自同一客户端的任何其他服务,而且没有任何问题。 主机

  • UAC已禁用
  • 将LocalAccountTokenFilterPolicy设置为1

当直接login到机器时使用同一个用户,我可以查询,启动或停止这个“flexnet授权服务”,没有任何问题,只有在远程执行时才会遇到问题。

最初,当我们的卸载程序无法使用Windows C API卸载此服务时,我们遇到了这个问题。 当直接在机器上运行时,卸载程序可以正常工作,但是通过WMI远程调用时会失败。 我们一直在逐步减lesstesting用例,到目前为止,在远程尝试时,查询或试图停止或删除此特定服务都会失败。

我也尝试远程调用批处理脚本,其中包含以下命令:

 powershell.exe -Command "Start-process C:\myDeleteSvc.exe -Verb RunAs" 

其中myDeleteSvc.exe是在目标计算机上安装的一个简单程序,用于删除使用Windows C API的服务,但在访问被拒绝的OpenService调用中也失败了。 再一次,如果直接在机器上运行,它可以正常工作。

我在安装在Windows 7和2008R2机器上的服务发生过这种情况(没有在其他平台上testing过)。

有问题的服务是针对第三方软件的。 它依赖于Windows Management Instrumentation服务,但即使手动删除所有依赖项(和依赖项),仍然无法远程查询。

有没有人有任何进一步的调查build议(或解决scheme)?

有一种情况可以远程卸载服务。 我们与这个产品的支持团队讨论这个问题,当他们也困惑的时候,他们提供了一个msi文件,当它远程运行的时候,卸载了这个服务。 我们无法访问任何用于生成此msi的脚本,但我们被告知它“非常简单,只是卸载服务”。 一个可能的调查途径是理解,如果msi服务卸载执行任何“额外”时执行卸载 – 有谁知道吗?

一些相关的问题,尽pipe它们都是UAC的主题,并且以pipe理员身份运行,而且由于我可以远程查询其他服务,所以我认为我的问题肯定是稍有不同。 包括这些链接会让机器人认为这是垃圾邮件,所以只需在标题上进行search即可。

  • 即使在运行Administrator / elevated时尝试启动服务时,“访问被拒绝”
  • psexec:“访问被拒绝”?
  • 远程sc OpenSCManager查询失败5访问被拒绝

由于Craig620,问题确实与安全描述符有关。

 C:>sc sdshow "flexnet licensing service" D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;NU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWRPLOCRRC;;;IU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD) C:>sc sdshow myService D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD) 

从SID语法中,我们可以看到第一个条目( (D;;...;;;NU)禁用通过networking( NU )发送的任何内容的大部分权限。 当我改变了标准具有相同的权限减NU禁用,我可以使用sc.exe命令远程查询和删除服务。