远程服务查询(sc.exe 查询)失败,一项服务出现“访问被拒绝”,但其他服务没有失败

远程服务查询(sc.exe 查询)失败,一项服务出现“访问被拒绝”,但其他服务没有失败

我正在尝试远程卸载特定服务,但收到著名的“失败 5:访问被拒绝。”消息。我已将测试用例缩减为运行

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

我得到了

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

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

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

使用同一个用户直接登录到机器时,我可以毫无问题地查询、启动或停止此“flexnet 许可服务”,只有当我尝试远程执行此操作时才会遇到问题。

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

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

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

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

我在 Windows 7 和 2008R2 机器上安装该服务时遇到过这种情况(没有在其他平台上测试)。

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

是否有人对调查(或解决方案)有进一步的建议?

有一种情况是可以远程卸载服务。我们与该产品的支持团队进行了交谈,试图了解问题所在,虽然他们也感到困惑,但他们确实提供了一个 msi 文件,当远程运行时,该文件可以卸载相关服务。我们无法访问用于生成此 msi 的任何脚本,但我们被告知它“非常简单,它所做的就是卸载服务”。一种可能的调查途径是了解 msi 服务卸载在执行卸载时是否做了任何“额外”的事情——有人知道吗?

一些相关问题,虽然它们似乎都是 UAC 和以管理员身份运行的同一主题,而且由于我可以远程查询其他服务,所以我认为我的问题一定有些不同。包括链接会让机器人认为这是垃圾邮件,所以只需搜索标题即可。

  • 尝试启动服务时出现“访问被拒绝”,即使以管理员身份/提升权限运行
  • psexec:“访问被拒绝”?
  • 远程 sc OpenSCManager 查询失败 5 访问被拒绝

答案1

感谢 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)禁用对通过网络传输的任何内容赋予最高权限(NU)。当我将 SD 更改为具有相同权限(但不包括禁用)时NU,我可以使用命令远程查询和删除该服务sc.exe

相关内容