从下面的屏幕截图中可以看出,C:\Windows\system32\cmd.exe
存在(因为命令提示符本身正在使用该路径),并且我尝试使用短 cmd.exe 名称和完整路径引用它,但都导致 PsExec.exe 出现相同的错误:
The system cannot find the specified file.
网络服务用户确实存在;如果我输入错误,我会收到密码提示和消息,提示我用户名密码不存在。
我在多台计算机上收到此错误消息,但它在其他计算机上有效;混合使用 Windows Server 2008 R2 和 2012 R2。我正在使用最新版本的 PsExec.exe,目前是 2.11,并且正在运行我用来以管理员身份启动 PsExec 的命令提示符,因此它应该具有任何必要的权限。
我发现很多帖子都提到在远程机器上运行 PsExec 时会出现此问题,但没有发现有关我正在运行的本地机器的帖子。
对于这个问题您有什么想法吗?
答案1
最终的解决办法是不要运行我以管理员身份启动 PsExec 的命令提示符。如果我从以管理员身份运行的 cmd 提示符运行该命令,就会出现错误。如果我从非提升权限的命令提示符运行该命令,它就可以正常工作。
答案2
发生这种情况的另一个原因是您已停止或禁用 LanmanServer(服务器)或 LanmanWorkstation(工作站)服务。
PsExec 的工作方式是,它需要这些才能发挥作用。
答案3
我还发现,如果我将 PSExec 复制到另一个目录(并且 Sysinternals 目录不在 PATH 上)并尝试从那里运行它,它将像上面一样失败。如果我在 Sysinternals 目录上运行 PSExec,那么 -s 选项将起作用。
因此,要检查的另一项是确保 Sysinternals 文件夹位于路径上或 PSExec 从该目录执行。
显然,它需要另一个 Sysinternals 可执行文件......
答案4
对我来说,解决这个问题的方法是,从默认的 cmd 位置(在我的情况下是 c:\windows\system32)执行“psexec”命令,并提供参数的完整路径(您正在运行的应用程序):
C:\WINDOWS\system32>psexec c:\Projects\newdesktop\someapp.exe