我正在使用 sc 命令从两台计算机查询 PRODSRV 计算机上运行的服务的状态。它在一台计算机上运行正常,但在另一台计算机上失败。我做错了什么?
PRODSRV 是 Windows Server 2003。sc 运行的计算机也是 Windows Server 2003,其 sc 的结果为:
sc \\prodsrv query mssqlserver
SERVICE_NAME: mssqlserver
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
sc 不起作用的计算机是 Windows Vista,结果是:
sc \\prodsrv query mssqlserver
[SC] OpenSCManager FAILED 5:
Access is denied.
谢谢你!
答案1
看起来您远程访问 PRODSRV 的凭证没有查询服务的权限。
您显示的 PRODSRV 和 Vista 机器是否属于同一域?运行此命令时,您如何登录到每台机器?
看起来您遇到的只是凭证问题。请告诉我们上述问题,我们会找出您需要如何登录。在运行 SC 命令之前,您可能只需对 PRODSRV 执行“NET USE”即可,这样就万事大吉了……
编辑:在运行 SC 之前,请执行以下操作:
NET USE \\PRODSRV\IPC$ /USER:<username you logon to PRODSRV with> <password you use on PRODSRV>
我怀疑您在 Vista 机器和 PRODSRV 上使用的用户名和密码并不完全一致,但是您在 PRODSRV 和另一个 Windows 2003 机器上使用的却是同一个用户名和密码。
答案2
您可以检查安全事件日志,以查看 PRODSRV 对 Vista 系统中的凭据的看法。这可能会提供一些线索。您可以在 2003 系统上运行 compmgmt.msc,系统工具 - 事件查看器 - 安全,来访问安全事件日志。
答案3
根据您以何种身份和在何处运行查询,您将获得不同的结果 - 很大程度上取决于您是否是“交互”组的成员。
我写了一篇关于查询 Windows 服务的状态在我的博客上,我认为有一个解决方案(或者至少对其他人有帮助)。使用亚蛋白,并查看访问控制列表。
然后,您可以添加权限来查询特定用户/组。