我有一个Windows服务作为本地系统在Windows Server 2003上运行,我试图使用PsExec作为另一个用户(使用-u -p参数)运行一个命令,但我一直让Access is denied. PsExec could not start Access is denied. PsExec could not start错误。
可以执行以下操作来复制该问题:
C:\Documents and Settings\me>PsExec.exe -s cmd PsExec v2.11 - Execute processes remotely Copyright (C) 2001-2014 Mark Russinovich Sysinternals - www.sysinternals.com Microsoft Windows [Version 5.2.3790] (C) Copyright 1985-2003 Microsoft Corp. C:\WINNT\system32>whoami nt authority\system C:\WINNT\system32>PsExec.exe -u DOMAIN\my-user -p mypass cmd PsExec v2.11 - Execute processes remotely Copyright (C) 2001-2014 Mark Russinovich Sysinternals - www.sysinternals.com Access is denied. PsExec could not start cmd:
在上面的例子中,第一个PsExec命令( PsExec.exe -s cmd )会给你一个命令行作为本地系统。 然后第二个PsExec命令( PsExec.exe -u DOMAIN\my-user -p mypass cmd )引发我试图解决的错误。
任何帮助将不胜感激! 先谢谢你!
作为LocalSystem帐户启动PSEXEC.EXE的第一个实例后,在命令中包含本地计算机的IP地址以启动第二个PSEXEC实例,如下所示:
PSEXEC.EXE \\LocalComputerIPAddress -u DOMAIN\my-user -p mypass CMD
您遇到的行为是由于Windows Server 2003的Service Pack 1添加了一个名为“ 环回检查function”的新安全function 。 根据链接的MSKB文章:
在[安装Service Pack 1]之后,如果尝试使用其全限定域名(FQDN)或其以下通用命名约定(UNC)path中的CNAME别名在本地访问服务器,则会遇到身份validation问题:
\\servername\sharename在这种情况下,您遇到以下症状之一:
- 您会收到重复的login窗口。
- 您收到“拒绝访问”错误消息。
- 您收到“没有networking提供商接受给定的networkingpath”错误消息。
- 安全事件日志中logging事件ID 537。
本文提出了两种解决scheme(除了上面提供的解决方法之外),这两种解决scheme都涉及编辑registry以执行以下任一操作:1)添加可在NTLM身份validation请求中引用的主机名,或者2)有效禁用身份validation回送检查将服务器返回到SP1之前的行为。
根据这篇关于PSEXEC如何工作的 WindowsITPro.com文章:
PsExec在远程系统上启动可执行文件,并控制可执行文件进程的input和输出stream,以便可以与本地系统中的可执行文件进行交互。 PsExec通过从其可执行映像中提取名为Psexesvc的embedded式Windows服务并将其复制到远程系统的Admin $共享中来完成此操作。
因此,即使您在本地计算机上运行PSEXEC,它仍在使用ADMIN$共享,因此您正在运行上述的环回检查function行为更改。