You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PsExec仅配合runas /netonly生效,用-u/-p参数遇访问被拒绝求助

解决PsExec直接使用-u/-p参数出现"Access Denied"的问题

我之前也碰到过一模一样的情况,两种操作的核心差异在于身份验证的上下文逻辑不同,咱们一步步拆解问题和解决办法:

为什么两种方式结果不一样?

runas /netonly /user:computername\username cmd 这个命令的核心作用是:让你打开的这个cmd窗口,在访问网络资源时使用远程机器computername的本地管理员账户username,但本地操作依然用你当前的用户身份。当你在这个窗口里运行psexec \\computername cmd时,PsExec会自动继承这个网络上下文的身份,用远程本地管理员权限去连接目标机器,所以能顺利成功。

而直接用psexec \\computername -u username -p password cmd时,PsExec默认会把username当作本地机器账户或者域账户去验证,而非你实际想使用的远程机器本地账户,这就导致目标机器直接拒绝了这个不匹配的身份请求。

具体解决步骤

1. 明确指定远程本地账户

这是最常见也最有效的解决办法:在-u参数里加上远程机器名,明确告诉PsExec你要使用的是目标机器的本地账户。修正后的命令格式如下:

psexec \\computername -u computername\username -p password cmd

举个实际例子:如果远程机器名叫DESKTOP-ABC123,本地管理员账户是localadmin,命令就是psexec \\DESKTOP-ABC123 -u DESKTOP-ABC123\localadmin -p YourPass123 cmd。

2. 确认账户权限有效性

先检查目标机器上的username是否真的属于Administrators组:

  • 远程登录到目标机器,打开「计算机管理」→「本地用户和组」→「用户」,找到对应的账户,查看其所属组是否包含Administrators。如果被意外移除权限,也会导致访问被拒。

3. 调整远程UAC限制

Windows默认会限制本地管理员账户的远程访问权限,这也是触发"Access Denied"的高频原因:

  • 注册表方式:在本地打开注册表编辑器(regedit),右键「计算机」→「连接到网络注册表」,输入远程机器名后找到路径HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System,新建或修改LocalAccountTokenFilterPolicy(DWORD32位),设置值为1。
  • 组策略方式:在远程机器上打开组策略编辑器(gpedit.msc),依次定位到「计算机配置」→「Windows设置」→「安全设置」→「本地策略」→「安全选项」,找到**"网络访问: 本地账户的共享和安全模型"**,设置为经典 - 本地用户以自己的身份验证。

4. 检查防火墙与依赖服务

PsExec依赖SMB和RPC服务运行,需要确保目标机器的相关配置正常:

  • 可以临时关闭远程机器的Windows防火墙做测试,如果能成功连接,就需要在防火墙里添加允许「文件和打印机共享」的规则。
  • 确认远程机器的Server服务和Remote Registry服务处于运行状态。

5. 以管理员身份运行本地命令行

最后别忘了:确保你本地的cmd是以管理员身份运行的(右键cmd选择「以管理员身份运行」),如果本地没有管理员权限,也可能间接导致远程连接被拒绝。

内容的提问来源于stack exchange,提问作者Mini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:23:53