PSEXEC,访问被拒绝错误

时间:2009-05-06 07:30:58

标签: access-denied psexec windows-scripting

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

有关如何解决此问题的想法吗?

18 个答案:

答案 0 :(得分:64)

您好我在这里放置了许多来源的摘要,以获取“访问被拒绝”的各种解决方案: 大多数信息都可以在这里找到(包括所需的要求) - sysinternal help

  1. 如有人提到添加此注册表项,然后重新启动计算机:

      

    reg添加HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ system   / v LocalAccountTokenFilterPolicy / t REG_DWORD / d 1 / f

    阅读this knowledge base article以了解这是什么以及原因 需要

  2. 禁用防火墙(注意 - 这将使您不用任何防火墙 保护)

      

    netsh advfirewall set allprofiles state off

  3. 如果目标用户有一个空白的PW并且您不想添加一个,则在目标上运行:

      

    [HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ LSA]   “LimitBlankPasswordUse”= DWORD:00000000

  4. 这对我来说没什么用,但是我已经读过一些地方的其他人, 在目标执行:

      

    开始 - >运行 - > secpol.msc - >本地政策 - >安全选项 - >网络访问:共享>和本地帐户的安全模型>经典 - 本地用户自己进行身份验证

    如果已经在'经典'中:

      

    从提升的命令提示符gpupdate \ force运行到“仅限访客 - ..”   再次从提升的命令提示符gpupdate \ force

    返回'Classic - ..'
  5. 这个解决了我的问题:

      

    从提升的命令提示符“net use”运行目标查看输出图表和远程列中列出的共享(我只删除了断开连接的那些 - 你可以全部尝试)运行“net use [来自列表之前的远程路径” ] /删除“然后运行'net use \ target \ Admin $ / user:[用户名]'输入提示密码请求(如果空PW只按回车键),中提琴应该可以工作。

  6. 祝你好运,希望这能节省时间。

答案 1 :(得分:16)

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

答案 2 :(得分:11)

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

  1. 确保PsExec的启动器对于目标计算机是熟悉的,可以通过域,也可以在两台计算机上本地定义相同的用户和密码。
  2. 使用命令行参数指定目标计算机已知的用户(-u user -p password)
  3. 如果这无法解决您的问题,请确保目标计算机符合最低要求specified here

答案 3 :(得分:8)

This在我的案例中有所帮助:

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

答案 4 :(得分:5)

您可以尝试命令

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

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

答案 5 :(得分:4)

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

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"LocalAccountTokenFilterPolicy"=dword:00000001

请参阅:http://forum.sysinternals.com/topic10924.htmlhttp://www.brandonmartinez.com/2013/04/24/resolve-access-is-denied-using-psexec-with-a-local-admin-account/

答案 6 :(得分:4)

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

  1. 我使用 runas 在管理员帐户中运行脚本
  2. 我使用psExec 中的 -s参数在系统帐户中运行
  3. 在PsExec内部,我再次登录并使用管理员帐户
  4. 您可以使用&amp;运行多个命令
  5. 请记住用实际值替换[USERNAME],[PASSWORD],[COMPUTERNAME],[COMMAND1]和[COMMAND2]
  6. 代码如下所示:

    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"
    

答案 7 :(得分:4)

我刚刚添加了“-с”参数。它使Psexec可复制到远程机器。所以它没有访问错误。

答案 8 :(得分:3)

我发现Sophos继续将psexec.exe放入隔离区。一旦我授权,它运行正常。

答案 9 :(得分:2)

我有一个案例,AV正在隔离Psexec - 必须禁用按访问扫描

答案 10 :(得分:1)

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

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

之后就可以了。

答案 11 :(得分:1)

以下情况有效,但只有在我将PSEXEC从Microsoft升级到2.1后才能使用。

  

[HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \政策\系统]   &#34; LocalAccountTokenFilterPolicy&#34; = dword:00000001请参阅:   http://forum.sysinternals.com/topic10924.html

我有一个稍微老一点的版本没有用。我用它来通过戴尔卡斯做一些USMT的工作,做了一个款待:)

答案 12 :(得分:1)

我发现PSEXEC(和其他PS工具)失败的另一个原因 - 如果某些东西(例如,病毒或木马)隐藏了Windows文件夹和/或其文件,那么PSEXEC将失败并显示“Access is Denied”错误,PSLIST将给出错误“未找到处理器性能对象”,并且您将被置于黑暗中。

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

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

答案 13 :(得分:1)

在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

答案 14 :(得分:1)

即使在胜利10上,我仍然使用psexec。替换Windows 10的psexec.exe文件夹中的win32,旧版本可用 - &gt;我使用的是2.11.0.0版。我使用的Windows 10版本只会在远程计算机上运行.bat文件作为后台/隐藏进程。花了一整天才搞清楚这一点。

将上面的注册表项添加到远程计算机也有帮助:

   reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

答案 15 :(得分:0)

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

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

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

启用 UAC 时,请确保以管理员的身份运行 cmd

答案 16 :(得分:0)

对于其他命令,我决定将网络从公共改为工作。
尝试再次使用psexec命令后,它又可以工作了。
因此,要使psexec正常工作,请尝试将网络类型从公共更改为工作或家庭。

答案 17 :(得分:0)

我尝试了很多方法,但是无法使用 psexec 。它给出“拒绝访问”。将目标用户帐户类型从标准更改为管理员后,我通过psexec连接了计算机。

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

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

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