我有一个程序,它使用psExec检索远程主机上的环境变量.我收到错误:无法启动xxhost上的PSEXESVC服务访问被拒绝.
此命令适用于Windows 2003服务器但不适用于2008(如果我将CMD作为另一个用户运行,则它适用于2008):psexec\xxhost -u xxdomain\xxuser -p xxpasswrd -h cmd/c echo %% JAVA_HOME ^ %%
我还尝试在执行psexec之前创建连接(使用NET USE) - 如上所述,这适用于2003但不适用于2008:NET USE\XXhost psexec\host cmd/c echo %% JAVA_HOME ^ %%
问题是我不能在批处理文件中使用RUNAS,因为它会提示输入密码.那么,有没有人知道如何解决方法而不必在远程服务器上进行更改?
我花了几个小时才找到两台Windows 7计算机之间PsExec的工作方式,非管理员用户启动PsExec ...禁用UAC(EnableLUA = 0,ConsentPromptBehaviorAdmin = 0,LocalAccountTokenFilterPolicy = 1)不起作用,关闭防火墙不行...
在这里,我找到了工作方式 - 感谢JelmerS :(来自https://serverfault.com/questions/489822/psexec-is-not-connecting-to-machine-using-supplied-username-and-password/489845的信息)
这是因为在以另一个用户身份执行命令之前,psexec仍尝试使用您的本地凭据访问ADMIN $共享.根据此线程,您可以在执行psexec之前缓存凭据:
cmdkey.exe /add:MACHINE_NAME_HERE /user:MACHINE_NAME_HERE\Administrator /pass:PASSWORD_HERE psexec.exe \\MACHINE_NAME_HERE -i notepad cmdkey.exe /delete:MACHINE_NAME_HERE