PSEXEC,访问被拒绝错误

Posted

技术标签:

【中文标题】PSEXEC,访问被拒绝错误【英文标题】:PSEXEC, access denied errors 【发布时间】:2010-10-24 03:03:31 【问题描述】:

当我使用 PSEXEC.exe 时,远程系统出现“访问被拒绝”错误。

知道如何解决这个问题吗?

【问题讨论】:

我也遇到了这个问题,但截至 2020 年 5 月 31 日,这里或其他地方的解决方案都不适合我。 【参考方案1】:

您好,我在这里汇总了来自许多在线资源的摘要,以了解“拒绝访问”的各种解决方案: 大多数信息都可以在这里找到(包括所需的要求)-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 应该可以工作。

祝你好运,希望这可以节省一些人的时间。

【讨论】:

1) 帮助我(也是半相关的,需要用目标服务器名称完全限定用户名,因为用户是目标服务器的本地用户) 4) 将我的 Windows 7 连接到 Windows 虚拟 PC XP 模式时为我工作。谢谢! 转到文件和文件夹。 -> 查看 -> 向下滚动以禁用目标机器上的“简单文件共享”。这对我有用。我先尝试了所有其他的。包括5个,刚刚报Server not enabled for remote management forum.sysinternals.com/topic15919.html 的 sysinternals 帮助链接现在报告“Windows Sysinternals 论坛已移至 TechNet 论坛”并在 10 秒内重定向,除了不是帖子,而是一些通用列表“category= sysinternals&sort=lastpostdesc”。 “psexec 无法启动”帖子现在在这里:social.technet.microsoft.com/Forums/en-US/… 并且自我归因于 Karl 的第一个回复包含最低要求。 我知道这是旧的,但 #1 在 Windows 10 上为我做了诀窍,(两台机器)【参考方案2】:

我刚刚解决了一个相同的症状,方法是创建注册表值 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system\LocalAccountTokenFilterPolicy 并将其设置为 1。More details are available here。

【讨论】:

是的,在这里工作。谢谢!更清楚地说,它必须是 REG_DWORD 键。 谢谢,我将他的内容放在一个 .reg 文件中,瞧:code Windows 注册表编辑器版本 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] " LocalAccountTokenFilterPolicy"=dword:00000001code 请记住,当您对此注册表项进行此更改时,需要重新启动系统才能使更改生效【参考方案3】:

This 对我有帮助:

cmdkey.exe /add:<targetname> /user:<username> /pass:<password>
psexec.exe \\<targetname> <remote_command>

【讨论】:

谢谢伙计,这项工作对我来说是最简单的方法!!! 参考链接由forum.sysinternals.com/…更改为social.technet.microsoft.com/Forums/en-US/… 对我不起作用。 “访问被拒绝”问题似乎不是凭据。 仅供参考,@johnvkumpf 提供的 Technet 链接不再有效。我收到一个页面显示“您请求的页面已被删除” 好吧,该死。似乎没有在 archive.is 或 archive.org 存档。【参考方案4】:

PsExec 拥有其启动器拥有的任何访问权限。它在常规 Windows 访问控制下运行。这意味着启动 PsExec 的人(无论是您、调度程序、服务等)在目标机器上都没有足够的权限,或者目标机器没有正确配置。首先要做的是:

    确保目标计算机熟悉 PsExec 的启动器,无论是通过域还是在两台计算机上本地定义相同的用户和密码。 使用命令行参数指定目标机器已知的用户(-u 用户 -p 密码)

如果这不能解决您的问题,请确保目标机器满足最低要求,specified here。

【讨论】:

forum.sysinternals.com/forum_posts.asp?TID=15919 的“最低要求”帖子(回复)链接现在报告“Windows Sysinternals 论坛已移至 TechNet 论坛”并在 10 秒内重定向,除了不是到帖子,而是到一些通用列表“category=sysinternals&sort=lastpostdesc”。 “psexec 无法启动”帖子现在在这里:social.technet.microsoft.com/Forums/en-US/… 并且自我归因于 Karl 的第一个回复包含最低要求。 谢谢,@johnvkumpf。根据您的建议修复了链接,很高兴您看到它在原始帖子发布 10 年后仍然有用。下次随时建议对答案进行编辑(您可以实际修复答案,而不是评论)。 链接已失效。 不幸的是,它看起来不像是存档在archive.is或archive.org中。【参考方案5】:

你可以试试命令

net use \\computername\ipc$ /user:adminname password

在使用 psexec 之前获取远程 PC 的管理员权限。

【讨论】:

当我运行这个命令时,我得到:“命令成功完成。”运行这个命令的目的是什么?【参考方案6】:

我遇到了同样的问题。经过一番努力,我找到了一个简单而完整的解决方案:

    我使用 runas 在管理员帐户中运行脚本 我在psExec中使用-s参数在系统账户下运行 在 PsExec 中,我再次使用管理员帐户登录 您可以使用 & 运行多个命令 记得将 [USERNAME]、[PASSWORD]、[COMPUTERNAME]、[COMMAND1] 和 [COMMAND2] 替换为实际值

代码如下所示:

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"

【讨论】:

当我在资源管理器中右键单击我的 cmd 文件并选择以管理员身份运行时,我仍然收到“拒绝访问”。【参考方案7】:

尝试在目标(远程)机器上设置此键,然后重启机器:

[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/

【讨论】:

【参考方案8】:

我刚刚添加了“-с”参数。它使 Psexec 复制可执行到远程机器。因此它可以正常工作而不会出现访问错误。

【讨论】:

好的,但是继续复制远程计算机上已经存在的系统命令似乎很浪费。【参考方案9】:

我发现 Sophos 一直将 psexec.exe 放入隔离区。一旦我授权它,它就运行良好。

【讨论】:

【参考方案10】:

我找到了 PSEXEC(和其他 PS 工具)失败的另一个原因 - 如果某些东西(...比如病毒或木马)隐藏了 Windows 文件夹和/或其文件,那么 PSEXEC 将失败并显示“拒绝访问”错误,PSLIST 将给出错误“找不到处理器性能对象”,而您将一无所知。

您可以在 RDP 中;您可以访问 admin$ 共享;您可以远程查看驱动器内容等,但没有迹象表明文件或文件夹被隐藏是原因。

我将把这些信息发布在我昨天阅读的几个页面上,同时试图确定这个奇怪问题的原因,所以你可能会在其他地方逐字看到这个 - 只是想我会在其他人提出之前把这个词说出来他们试图理解为什么性能计数器与 PSEXEC 运行有任何关系。

【讨论】:

您提供的信息可能是好的、准确的信息,但问题是错误的。 我从我的防病毒程序 (Malwarebytes) 中排除了我的 PSTOOLS 目录,但仍然得到“拒绝访问”。【参考方案11】:

我遇到过 AV 隔离 Psexec 的案例 - 必须禁用按访问扫描

【讨论】:

【参考方案12】:

即使在 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

【讨论】:

作为 2009 年问题的 2016 年答案,我不确定这还会增加什么,因为注册表项已经在之前的答案中得到了很好的记录。【参考方案13】:

对于任何可能偶然发现这一点的人。 Windows 7 上的 Microsoft Windows 最近(2013 年 12 月)安全更新阻止了远程执行。 见http://support.microsoft.com/kb/2893294/en-us

我通过转到控制面板\程序\程序和功能\已安装的更新卸载了安全更新

在那之后它就起作用了。

【讨论】:

【参考方案14】:

以下方法有效,但只有在我将 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 工作,很享受 :)

【讨论】:

我有 PSEXEC 2.2,但添加这个键和值没有帮助。【参考方案15】:

在 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

【讨论】:

【参考方案16】:

除非我禁用了 UAC,否则我无法访问远程计算机。

这必须在本地完成,无论是从控制面板还是通过 cmd 运行以下命令:

reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f

启用 UAC 时,请确保以 administrator 身份运行 cmd

【讨论】:

错误:Microsoft Web Driver 无法与内置管理员帐户一起使用或在用户帐户控制关闭时。【参考方案17】:

对于不同的命令,我决定将网络从公共更改为工作。 再次尝试使用 psexec 命令后,它再次工作。 因此,要让 psexec 工作,请尝试将您的网络类型从公共更改为工作或家庭。

【讨论】:

【参考方案18】:

我尝试了很多方法,但我无法使用 psexec。它给出“拒绝访问”。在我将目标用户帐户类型从 Standard 更改为 Admin 后,我通过 psexec 连接了机器。

我研究了需要管理员类型帐户的原因,然后我发现this answer.

您可以通过以下方式更改目标计算机用户帐户:控制面板 -> 用户帐户 -> 更改帐户类型。如果您登录的是标准帐户,则必须输入管理员帐户和密码才能更改该帐户。

之后我使用以下命令登录:psexec \\remotepcname -u remoteusername -p remotepassword cmd

【讨论】:

【参考方案19】:

尝试了以上所有建议,但仍然无法解决错误。最后,一旦我进行了以下更改,我就可以成功运行 PSexec 命令。

事实证明,当您启用 UAC 时,psexec 无法按预期工作。我们需要将HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA 设置为 0,然后 psexec 开始按预期工作。

【讨论】:

以上是关于PSEXEC,访问被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章

Psexec 远程执行文件 提示 拒绝访问

c#winForm动态创建文件夹访问被拒绝

在 C# 中访问路径被拒绝错误

MySQL - 错误 1045 - 访问被拒绝

xampp phpmyadmin 访问被拒绝错误(#2002)

从 xampp 访问 phpmyadmin 时访问被拒绝错误