【发布时间】:2010-10-24 03:03:31
【问题描述】:
当我使用 PSEXEC.exe 时,远程系统出现“访问被拒绝”错误。
知道如何解决这个问题吗?
【问题讨论】:
-
我也遇到了这个问题,但截至 2020 年 5 月 31 日,这里或其他地方的解决方案都不适合我。
标签: access-denied psexec windows-scripting
当我使用 PSEXEC.exe 时,远程系统出现“访问被拒绝”错误。
知道如何解决这个问题吗?
【问题讨论】:
标签: access-denied psexec windows-scripting
您好,我在这里汇总了来自许多在线资源的摘要,以了解“拒绝访问”的各种解决方案: 大多数信息都可以在这里找到(包括所需的要求)-sysinternal help
正如有人提到的那样,添加这个 reg 密钥,然后重新启动计算机:
注册添加 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
阅读this knowledge base article 了解它的作用和原因 需要
禁用防火墙(注意 - 这将使您没有任何防火墙 保护)
netsh advfirewall 将所有配置文件状态设置为关闭
如果目标用户有一个空白 PW 而您不想添加一个,则在目标上运行:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] "LimitBlankPasswordUse"=dword:00000000
这对我没有用,但我在几个地方读过它对其他人有用, 在目标上执行:
开始 -> 运行 -> secpol.msc -> 本地策略 -> 安全选项 -> 网络访问:共享 > 本地帐户和安全模型 > 经典 - 本地用户以自己的身份进行身份验证
如果已经在“经典”中:
移至“仅限访客 - ..”从提升的命令提示符 gpupdate \force 运行 移回“经典 - ..”再次从提升的命令提示符 gpupdate \force
运行
这个解决了我的问题:
从提升的命令提示符“net use”在目标上运行,查看输出图表和远程列中列出的共享(我只删除了断开连接的共享 - 你可以全部尝试)运行“net use [remote path from before list ] /delete" 然后运行 'net use \target\Admin$ /user:[user name]' 输入提示密码请求(如果为空 PW 只需按 Enter 键),viola 应该可以工作。
祝你好运,希望这可以节省一些人的时间。
【讨论】:
我刚刚解决了一个相同的症状,方法是创建注册表值 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system\LocalAccountTokenFilterPolicy 并将其设置为 1。More details are available here。
【讨论】:
REG_DWORD 键。
code Windows 注册表编辑器版本 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] " LocalAccountTokenFilterPolicy"=dword:00000001code
This 对我有帮助:
cmdkey.exe /add:<targetname> /user:<username> /pass:<password>
psexec.exe \\<targetname> <remote_command>
【讨论】:
PsExec 拥有其启动器拥有的任何访问权限。它在常规 Windows 访问控制下运行。这意味着启动 PsExec 的人(无论是您、调度程序、服务等)在目标机器上都没有足够的权限,或者目标机器没有正确配置。首先要做的是:
如果这不能解决您的问题,请确保目标机器满足最低要求,specified here。
【讨论】:
你可以试试命令
net use \\computername\ipc$ /user:adminname password
在使用 psexec 之前获取远程 PC 的管理员权限。
【讨论】:
我遇到了同样的问题。经过一番努力,我找到了一个简单而完整的解决方案:
代码如下所示:
runas /user:[USERNAME] "psexec -e -h -s -u [USERNAME] -p [PASSWORD] \\[COMPUTERNAME] cmd /C [COMMAND1] & [COMMAND2]"
如果您想在另一台机器上调试脚本,请运行以下模板:
runas /user:[USERNAME] "psexec -i -e -h -s -u [USERNAME] -p [PASSWORD] \\[COMPUTERNAME] cmd /C [COMMAND1] & [COMMAND2] & pause"
【讨论】:
尝试在目标(远程)机器上设置此键,然后重启机器:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"LocalAccountTokenFilterPolicy"=dword:00000001
请参阅:http://forum.sysinternals.com/topic10924.html 和 http://www.brandonmartinez.com/2013/04/24/resolve-access-is-denied-using-psexec-with-a-local-admin-account/
【讨论】:
我刚刚添加了“-с”参数。它使 Psexec 复制可执行到远程机器。因此它可以正常工作而不会出现访问错误。
【讨论】:
我发现 Sophos 一直将 psexec.exe 放入隔离区。一旦我授权它,它就运行良好。
【讨论】:
我找到了 PSEXEC(和其他 PS 工具)失败的另一个原因 - 如果某些东西(...比如病毒或木马)隐藏了 Windows 文件夹和/或其文件,那么 PSEXEC 将失败并显示“拒绝访问”错误,PSLIST 将给出错误“找不到处理器性能对象”,而您将一无所知。
您可以在 RDP 中;您可以访问 admin$ 共享;您可以远程查看驱动器内容等,但没有迹象表明文件或文件夹被隐藏是原因。
我将把这些信息发布在我昨天阅读的几个页面上,同时试图确定这个奇怪问题的原因,所以你可能会在其他地方逐字看到这个 - 只是想我会在其他人提出之前把这个词说出来他们试图理解为什么性能计数器与 PSEXEC 运行有任何关系。
【讨论】:
我遇到过 AV 隔离 Psexec 的案例 - 必须禁用按访问扫描
【讨论】:
即使在 win 10 上,我仍然使用 psexec。将 Windows 10 的 win32 文件夹中的 psexec.exe 替换为旧版本即可工作 -> 我使用版本 2.11.0.0。我使用的 Windows 10 版本只会在远程计算机上将 .bat 文件作为后台/隐藏进程运行。花了一整天才弄明白。
将注册表项从上面添加到远程计算机也有帮助:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
【讨论】:
对于任何可能偶然发现这一点的人。 Windows 7 上的 Microsoft Windows 最近(2013 年 12 月)安全更新阻止了远程执行。 见http://support.microsoft.com/kb/2893294/en-us
我通过转到控制面板\程序\程序和功能\已安装的更新卸载了安全更新
在那之后它就起作用了。
【讨论】:
以下方法有效,但只有在我将 PSEXEC 从 Microsoft 升级到 2.1 之后。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] "LocalAccountTokenFilterPolicy"=dword:00000001 请参阅: http://forum.sysinternals.com/topic10924.html
我有一个稍旧的版本,但无法使用。我用它通过 Dell kace 做一些 USMT 工作,很享受 :)
【讨论】:
在 Windows Server 2012 R2 上,我无法从用户帐户运行
psexec -u administrator -p password \\machinename -h -s -d -accepteula cmd.exe
但是如果你在没有参数-h -s 的情况下运行它就可以正常工作。这就是为什么我用它来解决我的问题:
psexec -accepteula -u administrator -p password \\machinename %PathToLocalUtils%\psexec.exe -h -s -d cmd.exe
【讨论】:
除非我禁用了 UAC,否则我无法访问远程计算机。
这必须在本地完成,无论是从控制面板还是通过 cmd 运行以下命令:
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
启用 UAC 时,请确保以 administrator 身份运行 cmd。
【讨论】:
对于不同的命令,我决定将网络从公共更改为工作。
再次尝试使用 psexec 命令后,它再次工作。
因此,要让 psexec 工作,请尝试将您的网络类型从公共更改为工作或家庭。
【讨论】:
我尝试了很多方法,但我无法使用 psexec。它给出“拒绝访问”。在我将目标用户帐户类型从 Standard 更改为 Admin 后,我通过 psexec 连接了机器。
我研究了需要管理员类型帐户的原因,然后我发现this answer.
您可以通过以下方式更改目标计算机用户帐户:控制面板 -> 用户帐户 -> 更改帐户类型。如果您登录的是标准帐户,则必须输入管理员帐户和密码才能更改该帐户。
之后我使用以下命令登录:psexec \\remotepcname -u remoteusername -p remotepassword cmd
【讨论】:
尝试了以上所有建议,但仍然无法解决错误。最后,一旦我进行了以下更改,我就可以成功运行 PSexec 命令。
事实证明,当您启用 UAC 时,psexec 无法按预期工作。我们需要将HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA 设置为 0,然后 psexec 开始按预期工作。
【讨论】: