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

远程执行RUNDLL32更新打印机设置失败的问题解决

远程更新Windows 2016打印机设置的问题与解决方案

背景说明

两台Windows 2016服务器共用同一域管理员账号,Server1的E:\Temp\目录下存有打印机配置文件ZEBRA_1.dat。在Server1本地以管理员身份运行PowerShell执行以下命令,可正常完成ZEBRA_1打印机的设置更新:

start-process -Verb runas -filepath "C:\Windows\System32\RUNDLL32.EXE"  -argumentlist "PRINTUI.DLL,PrintUIEntry /Sr /n `\"ZEBRA_1`\" /a `\"E:\Temp\ZEBRA_1.dat`\" 2 7 c d g u"

远程执行的异常情况

在Server2上以管理员身份通过Invoke-Command远程执行上述命令时,无任何报错信息,但Server1的打印机设置未发生变更。尝试过以下调整均未解决问题,还出现rundll32.exe和wsmprovhost.exe进程挂起的现象:

  • 移除-Verb runas参数
  • 去掉Start-Process直接调用命令
  • 使用New-PSSession建立会话后执行
  • 添加-Credential参数指定管理员凭据

可行解决方案:借助PsExec.exe远程执行

最终通过PsExec工具实现了远程更新需求,支持两种执行场景:

场景1:指定域账号执行

适用于需要调整个人打印机设置的情况:

$server = 'Server1'; $localDatFolder = 'e:\Temp\'; $printer = 'ZEBRA_1'

$credential = Get-Credential -Message '输入打印机设置操作的账号密码'
$user = "MyDomain\$($credential.GetNetworkCredential().UserName)" 
$password = $credential.GetNetworkCredential().password

$ARGS = @('PRINTUI.DLL,PrintUIEntry', '/Sr', $('/n"'+$printer+'"'), $('/a"'+$localDatFolder+$printer+'.dat"'), '2', '7', 'c', 'd', 'g', 'u')
e:\temp\pstools\psexec.exe \\$server -u $user -p $password C:\Windows\System32\RUNDLL32.EXE $ARGS 

场景2:使用系统账号执行

适用于无需调整个人打印机设置的情况:

# 无需调整个人设置时可使用此方式:
$server = 'Server1'; $localDatFolder = 'e:\Temp\'; $printer = 'ZEBRA_1'    
$ARGS = @('PRINTUI.DLL,PrintUIEntry', '/Sr', $('/n"'+$printer+'"'), $('/a"'+$localDatFolder+$printer+'.dat"'), '2', '7', 'c', 'd', 'g', 'u')    
e:\temp\pstools\psexec.exe \\$server -s C:\Windows\System32\RUNDLL32.EXE $ARGS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:45:22