远程 Windows 共享打印机掉线修复
一份运维排查手册,用于解决"打印服务端(A 机)或客户端(B 机)重启后,跨网络共享打印机连不上 / 变灰 / 打印卡住"的问题。
目录(快速跳转)
| 节 | 内容 | 类型 |
|---|---|---|
| 一 | 适用场景 | 🔍 判断 |
| 二 | 先诊断(只读) | 🔍 诊断(动手前必做) |
| 三 | 根因 | 📖 背景 |
| 四 | 方案 A:存凭据 | 🛠 修复(首选) |
| 五 | 方案 B:开 Guest 匿名 | 🛠 修复(降级,需批准) |
| 六 | 关键坑 | ⚠️ 避坑(动手前扫一遍) |
| 七 | 验证 | ✅ 验证 |
| 八 | 回滚与长期维护 | ↩️ 回滚 |
| 九 | 决策速查 | 🚀 应急(只看这节) |
一、适用场景
- A 机已共享某台打印机;B 机经 Tailscale / ZeroTier / 其他 VPN 或纯局域网,用主机名访问
\\HOSTNAME\PRINTER(不是 IP)。 - 常见症状:
net view \\HOSTNAME报 错误 5 拒绝访问;net use \\HOSTNAME\IPC$报 密码无效 / 登录失败;- 客户端"设备和打印机"里打印机变灰、打印任务卡住;
- 系统事件 1702 绑定句柄无效(Event ID 1702,在「事件查看器 → 应用程序和服务日志 → Microsoft → Windows → PrintService」下查看,来源 PrintService);
- A 机侧排查一切正常(spooler / lanmanserver 在跑、共享存在、防火墙放行 445、SMB 配置正常)。
- 关键判断:对象是"没了" 还是 "会话死了"——两者修法不同(见第三节与第九节)。
二、先诊断(只读,先别改)
2.1 先在 A 机确认共享本身(避免 B 机对着错名狂连)
net share
net share PRINTER
确认共享名拼写、共享权限(Everyone / 指定账号是否有读取、打印)。共享名有空格或拼写差异是高频低级错误(带空格的共享名在命令里要加引号,见 5.1)。
2.2 再在 B 机(管理员权限)依次确认
- DNS 解析:
nslookup HOSTNAME—— VPN 场景主机名解析失败或解析到错误地址很常见(ping可能走 IPv6 或套上错误搜索后缀,先看 nslookup 更准)。 - 网络通不通:
ping HOSTNAME(VPN 场景应解析到 overlay 地址,几毫秒)。 - Workstation 服务在跑:
sc query Workstation(或net start看列表)。 - 现有 SMB 会话:
net use—— 看有没有\\HOST\IPC$/\\HOST\PRINTER及其状态。 - 凭据管理器有无 A 机凭据:
cmdkey /list | findstr HOSTNAME。
注意:关键词要用 B 机实际访问用的那个名字(可能带 DNS 后缀,或与 A 机真实主机名不同),否则会漏判。 - B 机打印机对象在不在:注册表
HKCU\Printers\Connections下有无,,HOST,PRINTER键(1702 通常对象还在,只是底层连接死了)。
> 不要一上来就重加打印机或开 Guest。先判断"对象是没了"还是"会话死了"。
三、根因
A 机重启 → 旧 SMB 会话失效;B 机没有保存的登录凭据 → 重新连接时无法匿名、也无法自动透传(B 机本地账号密码 ≠ A 机账号密码)→ 登录被拒(错误 5 / 密码无效)。
1702 是另一回事:B 机打印机对象还在,但底层 SMB 连接句柄失效,重连即可,对象不用重建。
本质:Windows 不会在重启后自动用保存凭据重连 SMB 打印共享,除非你显式做了下面方案 A 的持久化。
如果已确认是"会话死了"(对象还在),最快的修法就是重建会话:
net use \\HOSTNAME\PRINTER /delete
net use \\HOSTNAME\PRINTER /persistent:yes
(也可只跑第二句,让 SMB 自动重建。若凭据还没存,先按方案 A 的 4.1 做一遍。)
四、方案 A:存凭据(推荐,不动服务端安全设置)
4.0 ⚠️ 先读:密码落盘风险与 ssh-only 决策树
风险(三条底线):
- 服务端账号密码不要写进任何落到磁盘的脚本,也不要用 schtasks /rp —— /rp 会以可读形式存进任务 XML,任何管理员都能用 schtasks /query /xml 取回明文。
- 正确顺序:先 cmdkey 存一次凭据 → 之后所有 net use 都不传 user/pass,让系统自动从凭据管理器取。这样脚本里完全无密码。
- 兜底:若环境限制导致 cmdkey 写不进(见坑 1),必须在脚本里带明文时,脚本文件须设 NTFS 权限仅 SYSTEM / Administrators 可读,并在运维记录里标注为「已知降级」。
ssh-only 场景决策树(解决"全程只能 ssh → cmdkey 存不进 → 无密码脚本取不到"的死结):
【先做这一步】这台机器以前有没有过交互式登录(装机 / 初次配置时)?
│ 若那时存过 cmdkey,凭据很可能仍在 CredMan 里 —— 先 cmdkey /list 确认,
│ 别急着判定"必须重新安排一次交互式会话"。
│
只能 ssh 远程操作?
│
├─ 能安排一次交互式会话(RDP 远程桌面 或 物理接触)?
│ ├─ 是 → 在那个交互式会话里跑 cmdkey /add(这是唯一可靠的写入时机)
│ │ → 之后全部走无密码脚本 + Startup 自启 【最优】
│ │ (RDP 属于交互式登录 Type 10,能写凭据管理器;
│ │ ssh 属于网络登录 Type 3,不能。二者不同。)
│ └─ 否(纯 ssh / 批处理,永远无法交互式登录)
│ └─ 只能接受明文降级:
│ · printer_logon.bat 内写 net use \\HOST\IPC$ /user:HOST_USER HOST_PASS /persistent:yes
│ · 脚本放受保护目录,NTFS 权限仅 SYSTEM + Administrators 可读
│ · 记录为「已知降级」,A 机密码轮换时同步更新(见坑 9)
│ · ★ 若服务端可授权(Guest 匿名可接受),改走方案 B 反而更干净
│ —— 它不需要客户端存任何凭据,从根上绕开 CredMan 的 LogonType 限制
│
└─ ⚠️ CredMan 的写入受 LogonType 限制 —— 网络登录(Type 3)会话没有可写凭据存储,
这不是组策略能开出来的开关。不要再浪费时间找 gpedit / reg 选项。
4.1 执行步骤(B 机,管理员)
| 变量 | 含义 | 示例 |
|---|---|---|
HOSTNAME |
A 机主机名(B 机访问用的那个) | print-srv |
HOST_USER |
A 机上有打印机共享权限的账号(凭据的"用户名"字段) | print-srv\printuser |
HOST_PASS |
该账号密码 | ** |
PRINTER |
A 机共享的打印机名 | LBP2900 |
CLIENT_USER |
B 机上执行 cmdkey 的那个本地账号(凭据的属主) |
B机本地用户名 |
> ⚠️ HOSTNAME 的前后一致性:cmdkey /add: 里存的名字,必须与 net use \\HOSTNAME\... 里用的名字逐字一致(大小写不敏感,但 FQDN / 别名 / DNS 后缀差异会导致命中失败)。
> 常见坑:存的是 print-srv,但 hosts/DNS 后缀让 SMB 实际走 print-srv.local → CredMan 命中不了 → 无密码 net use 照样报错误 5。
> 不确定时用 B 机 net use 报错信息里显示的那个名字。
:: 1) 先把凭据存进凭据管理器(只需做一次,密码不落脚本)
:: 必须在交互式会话里执行,ssh 会话会失败(见 4.0 决策树 / 坑 1)
:: 记下执行这个命令时所用的「B 机登录账号」—— 它就是 CLIENT_USER(凭据属主)
cmdkey /add:HOSTNAME /user:HOST_USER /pass:HOST_PASS
:: 2) 建立持久 SMB 会话 —— 不传 user/pass,自动取用上一步的凭据
net use \\HOSTNAME\IPC$ /persistent:yes
net use \\HOSTNAME\PRINTER /persistent:yes
:: 3) 让打印机对象在 B 机"所有用户"下注册(重启/登录后由 spooler 实体化为打印机)
rundll32 printui.dll,PrintUIEntry /ga /n\\HOSTNAME\PRINTER
:: 4) 确认 /ga 真的写进去了(RC=0 不等于成功,见坑 5)
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections"
IPC$ 用于身份认证(通常瞬时建立,不一定持久),PRINTER 用于取打印队列;两个都建更稳,代价很小。
4.2 登录自启(防凭据偶发失效 / 会话没自动重连)
> 说明:这里的"登录"指 onlogon 交互式登录事件(控制台登录 / RDP),ssh 远程登录不触发。
> ⭐ 核心原则:谁存了凭据,自启就跑在谁下面。
> 两种自启方式都以 B 机的某个本地账号 为运行上下文:
> - Startup 文件夹:跑在「当前登录 B 机的那个用户」下 → 所以 cmdkey 必须是这个用户执行的;
> - 计划任务:跑在 /ru 指定的 B 机账号下 → 所以 /ru 必须等于执行 cmdkey 的 B 机账号(即 CLIENT_USER)。
>
> 存凭据的账号与自启运行的账号一旦错位,无密码 net use 就会失败——因为运行上下文在自己的 CredMan 里找不到那条凭据。
首选 Startup 文件夹——它天然满足"无密码落盘 + 跑在用户上下文 + 能读该用户的凭据管理器"三个条件:
把 printer_logon.bat 放进 %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\。
> ⚠️ 两点路径细节:
> - Startup 是用户级目录,放进谁的目录下,就以谁的身份跑 → 必须放到执行了 cmdkey 的那个 B 机账号的 Startup 下。
> - %APPDATA%\...\Startup\ 解析的是当前登录用户的目录。若 CLIENT_USER ≠ 当前登录用户(例如你正用管理员账号操作、凭据却存在另一个账号下),必须写绝对路径:
> C:\Users\CLIENT_USER\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
脚本内容与两种放置方式的取舍见坑 4。
备选(计划任务):
:: 关键:/ru 是 B 机本地账号(CLIENT_USER),/it 必须有,/rp 绝不能有
schtasks /create /tn "Printer_Logon" /sc onlogon /ru CLIENT_USER /it /tr "C:\path\printer_logon.bat"
> ⚠️ 三个约束必须同时满足:
> 1. /ru 填 CLIENT_USER(B 机本地账号),不是 HOST_USER —— 这是最容易错的一处:
> - HOST_USER(如 print-srv\printuser)是 A 机账号,只用作 CredMan 那条凭据的 "用户名"字段(连 A 机时用它做对端认证);
> - /ru 要的是 B 机本地账号,即凭据的属主(4.1 里执行 cmdkey 的那个登录用户)。只有这个账号的上下文才读得到自己 CredMan 里的凭据;
> - 混淆后果:B 机上不存在 HOST_USER 这个本地账号 → schtasks 报"找不到用户 / 用户名或密码不正确"建不成;即便建成了,一跑就报"用户名或密码不正确 / 找不到网络路径",且看不出是账号填错;
> - ⚠️ 若 B 机账号与 A 机用户名恰好同名,那是"同名不同机"的两个账号,别以为写同一个名字就对了。
> 2. 必须加 /it——onlogon + /ru + 不存密码时,只有 /it 能让任务"仅在该用户交互式登录时以该用户身份运行"。不加 /it:交互式命令行下会弹窗索要密码,非交互(ssh / 批处理)下直接建不成任务;
> 3. 绝不能加 /rp——加了就把密码存进任务 XML(可被 schtasks /query /xml 读出)。若系统 / 策略强制要 /rp 才能创建,改回 Startup 文件夹方案。
>
> (/rl HIGHEST 一般不需要——net use 建持久连接是用户级操作,加提权反而引入 UAC 约束。)
五、方案 B:开 Guest 匿名打印(改服务端安全设置,需批准)
效果:B 机 / 任何机器免密打印,重启不丢。代价:A 机 SMB 匿名可访问,属安全降级,必须经用户 / 甲方批准再动。
> 顺带说明:方案 B 不需要客户端存任何凭据,从根上绕开 CredMan 的 LogonType 限制——所以在 4.0 决策树"无法交互式登录"的场景里,它其实是比明文降级更干净的出口。
5.1 A 机(打印服务端)需改
:: 1) 启用 Guest 账户
net user guest /active:yes
:: 2) 允许 null session(现代 Windows 默认拦)
reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" /v RestrictNullSessAccess /t REG_DWORD /d 0 /f
:: 3) 允许非域环境下远程使用本地账号完整令牌
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
:: 4a) 先看现有授权 —— /grant 是「替换」不是「追加」,别把已配好的账号覆盖掉
net share PRINTER
:: 4a') 授予 Everyone 读取(打印共享只需 Read)
net share PRINTER /grant:Everyone,READ
:: 若要保留原有账号,必须在同一条命令里把所有 /grant 一并列出,例如:
:: net share PRINTER /grant:Everyone,READ /grant:printuser,CHANGE
:: 4b) 打印机 ACL 给 Everyone「打印」—— 走 GUI:
:: 打印机属性 → 安全 → 添加 Everyone → 勾选「打印」
> ⚠️ 三处易错:
> - 4a 的 /grant 会替换授权列表(不是追加)。执行前先 net share PRINTER 看清现有授权;要保留原账号就必须在同一条命令里全部列出,否则原账号会被静默移除。
> - 4a 与 4b 是两回事:"打印"权限在打印机 ACL 上,不在共享权限里(共享权限只有 Read / Change / Full 三档)。只做 4a 不做 4b,客户端能连上但打不了。
> - 共享名含空格时命令要加引号:net share "My Printer" /grant:Everyone,READ(呼应 2.1 的高频低级错误)。
> /ga 处引号只包 UNC 路径、开关留在引号外:
> rundll32 printui.dll,PrintUIEntry /ga /n"\\HOSTNAME\My Printer"
> (写成 "/n\\HOSTNAME\My Printer" 会把 /n 一并当成路径的一部分,反而错。)
另需在 「网络和共享中心 → 高级共享设置 → 所有网络」 下选择 "无密码保护的共享"(仅关闭这一项通常不够,上面两项注册表才是关键)。
5.2 B 机(客户端)需改
:: Win10 1709+ 默认禁止不安全的来宾登录,Win11 24H2 起更严 —— 客户端侧必须开
reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v AllowInsecureGuestAuth /t REG_DWORD /d 1 /f
> - 注意区分:AllowInsecureGuestAuth 在客户端(LanmanWorkstation),RestrictNullSessAccess / LocalAccountTokenFilterPolicy 在服务端(LanmanServer)。只改一边连不通。
> - Win7 / Server 2008 R2 及更早作客户端时无此项(默认即允许匿名),无需添加。
5.3 防火墙确认(A 机侧,高频漏项)
确认 A 机防火墙对 B 机所在的 overlay 网段放行 TCP 445。
VPN 场景下这是最容易漏的一条:防火墙常只放行本地子网,overlay 段(如 Tailscale 的 100.x、ZeroTier 的自有网段)不在范围内 → 注册表全改对了还是不通,很容易误判成"注册表改错了"。
:: 查看当前 445 入站规则作用域
:: 中文系统
netsh advfirewall firewall show rule name="文件和打印机共享 (SMB-In)" dir=in
:: 英文系统
netsh advfirewall firewall show rule name="File and Printer Sharing (SMB-In)" dir=in
:: 拿不准规则名就用通配查
netsh advfirewall firewall show rule name=all dir=in | findstr /i "445 SMB"
5.4 生效
改完后重启 A 机(或 net stop server && net start server)、重启 B 机(或 net stop workstation && net start workstation)生效。
六、关键坑(照搬通用教程会踩,都是真实环境踩出来的)
- ssh 网络登录会话(Type 3)下
cmdkey /add写不进凭据管理器,报"不能从此登录会话保存凭据"。→ 完整应对路径见 4.0 的 ssh-only 决策树:先查历史凭据是否还在;能开 RDP / 交互式会话就在那里存;真不行才走 4.0 标注的明文降级(脚本需 NTFS 仅 SYSTEM + Administrators 可读),或改走方案 B。 - 非交互 ssh 会话里
rundll32 printui /in(当前用户立即加打印机)必卡死(弹驱动信任框挂死,最终 SIGTERM);PowerShellAdd-Printer -ConnectionName则快速报"名称无效"失败。→ 两者都别用,改用/ga(为所有用户注册,不弹框)。 /ga注册的是"所有用户"连接,落 HKLM,重启 / 登录后由 spooler 实体化;当前非交互会话里看不到打印机对象是正常的。想立刻看到效果可手动触发:net stop spooler && net start spooler(否则等下一次登录事件自动实体化)。注意 spooler 重启需管理员权限,ssh 非管理员会话下会报"拒绝访问"。-
登录自启脚本怎么写、怎么放(承接 4.2):
- 脚本不含密码,靠 4.1 已存的 CredMan 凭据,只做重连。只需改第一行(其余用%HOSTNAME%引用):```bat
@echo off
REM === 只需改这一行:A 机主机名(须与 cmdkey 存的名字逐字一致)===
set HOSTNAME=<A机主机名>set tries=0
:wait
ping -n 1 -w 2000 %HOSTNAME% >nul 2>&1
if not errorlevel 1 goto connect
set /a tries+=1
if %tries% geq 40 goto connect
ping -n 3 127.0.0.1 >nul
goto wait
:connect
net use \%HOSTNAME%\IPC$ /persistent:yes
```> 逻辑:先 ping 等 VPN 通,再重连;
net use不带密码。
> ⚠️HOSTNAME必须填主机名,不要填 IP:打印机对象是按\\HOSTNAME\PRINTER注册的,CredMan 的目标也是这个名字——用 IP 建的是另一个 SMB 会话,救不了打印机连接。若只想用 IP 探活,单独加一行ping -n 1 -w 2000 <A机IP> >nul 2>&1即可,但net use那行仍须用主机名(见 4.1 的前后一致性)。
- 放哪:
- 能建计划任务就用schtasks /sc onlogon /ru CLIENT_USER /it(/ru是 B 机本地账号、/it必须有、/rp绝不能有,见 4.2);
- 若 B 机schtasks / cmd / rundll32 / reg / powershell / wmic被本机安全策略黑名单拦("PROGRAM BLOCKED BY SECURITY POLICY"),用 Startup 文件夹——它不需要任何被拦的二进制,也不需要存密码,是这种环境下的唯一干净解;
- 两种方式的运行账号都必须等于执行cmdkey的那个 B 机账号(4.2 的核心原则)。
5./ga的 RC=0 不等于成功:rundll32常在被策略拦截时仍返回 0。务必reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections"确认{GUID}键已生成。
> 极端情况:若rundll32本身也被安全策略拦(LOLBin 黑名单),/ga根本跑不了,打印机对象无法自动注册。此时只剩两条路:① 该机器曾经注册过对象(对象还在)→ 靠 Startup 重连会话即可,不需要/ga;② 由用户在 GUI 里手动添加打印机。
6. Git Bash / MSYS 里反斜杠路径会被转成正斜杠当开关(dir/del/ 命令把路径当参数前缀)→ 用MSYS_NO_PATHCONV=1或cd进目录用相对名。
7. ssh→cmd 下reg add带嵌套引号必失败("无效语法")→ 改用 .reg 文件 + sftp 上传 +reg import(.reg 内路径双写反斜杠、引号写\")。
8.net view \\HOST报错误 5 但net use \\HOST\IPC$成功是常态(前者列共享需更高权限 / 不同协商),只要 net use 通、打印机能打,就不必纠结 net view。
9. A 机账号密码轮换后,方案 A 会失效——旧的 CredMan 凭据和持久连接都指向旧密码。这是方案 A 的长期维护痛点:轮换后需重跑cmdkey /add:HOSTNAME …并重建net use。若不想承担这个维护成本,考虑方案 B(但那是安全降级)。
10. 混淆HOST_USER与CLIENT_USER是高频错误:前者是 A 机账号(作凭据的"用户名"字段,用于对端认证),后者是 B 机本地账号(凭据属主,决定谁能读到它)。计划任务的/ru、Startup 的所属目录,都必须是CLIENT_USER。详见 4.1 表格与 4.2 核心原则。
七、验证
> 前置条件:A 机打印机 ACL 已给相关用户(或 Everyone)打印权限,否则后面的验证会误判成"没修好"。
net use列出\\HOST\IPC$与\\HOST\PRINTER均 OK;cmdkey /list含HOSTNAME凭据(且非"仅此登录保存")——且是在CLIENT_USER的凭据管理器里;reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections"有{GUID}键(若做过/ga);- 同用户重启 / 注销再登录(用
CLIENT_USER登)→ 验证持久连接会自动重连; - 换另一个本地用户登录 → 确认"设备和打印机"里同样能看到该打印机(这一条才验证
/ga真的对所有用户生效;只登同一用户是验不出来的)。
⚠️ 前提是该用户在 A 机侧已有打印权限(打印机 ACL 给了 Everyone 或显式给了该账号)——否则会看不到,容易误判成/ga没生效;
⚠️ 注意:换用户登录后不会读到CLIENT_USER的 CredMan,若该用户要打印需单独为其存一次凭据(这正是坑 10 那组账号语义的实际影响); - 最后打印一张测试页确认端到端可用。
> 非交互 ssh 会话里看不到打印机对象(需登录事件实体化),这是预期,不是没修好;想立刻看到就重启 spooler(坑 3,需管理员权限)。
八、回滚与长期维护
方案 A 回滚:
cmdkey /delete:HOSTNAME
net use \\HOST\IPC$ /delete
net use \\HOST\PRINTER /delete
(cmdkey /delete 要在 CLIENT_USER 的上下文里执行,否则删的是别人的凭据。)
再删 Startup 里的 bat,或 schtasks /delete /tn "Printer_Logon";/ga 注册项可手动删 HKLM\...\Print\Connections\{GUID},删完重启 spooler(net stop spooler && net start spooler),否则打印机对象可能仍有残留。
方案 B 回滚(按「先断客户端、再收紧服务端」的顺序,避免中间态仍开放匿名):
- B 机(先断):
AllowInsecureGuestAuth改回0,重启 B 机或net stop workstation && net start workstation; - A 机:
LocalAccountTokenFilterPolicy改回0; - A 机:
RestrictNullSessAccess改回1; - A 机:恢复"密码保护的共享"(网络和共享中心 → 所有网络);
- A 机:禁用 Guest ——
net user guest /active:no; - A 机:收回 Everyone 的共享权限与打印机 ACL(
net share PRINTER /grant:...重新授权,注意/grant是替换语义;共享名含空格要加引号,见 5.1); - 两端重启相关服务或重启机器。
长期维护:A 机账号密码轮换后,方案 A 需重跑 cmdkey /add 与 net use(见坑 9);走 4.0 明文降级的,轮换时还要同步更新脚本里的密码。
九、决策速查
- 能改服务端安全设置、想一劳永逸且不想管密码轮换 → 方案 B(需批准;客户端也要开
AllowInsecureGuestAuth、A 机防火墙要放行 overlay 段 445、共享权限与打印机 ACL 是两件事)。 - 不想动服务端、走凭据 → 方案 A:先
cmdkey再无密码net use;自启首选 Startup 文件夹;计划任务必须是/sc onlogon /ru CLIENT_USER /it(/ru是 B 机本地账号不是HOST_USER、/it不可省、/rp绝不可加);二进制被拦也只能走 Startup。 - 谁存凭据,自启就跑在谁下面——存凭据账号与运行账号错位,是无密码
net use失败的第一嫌疑(坑 10)。 - 全程只能 ssh(
cmdkey写不进)→ 走 4.0 的 ssh-only 决策树:先查历史凭据 → 优先开一次 RDP 交互式会话存凭据 → 真不行可选明文降级(锁 NTFS)或改走方案 B。别找 gpedit 开关(LogonType 限制,开不出来)。 - 对象是"没了"还是"会话死了":前者要
/ga重建对象,后者只要重建会话(第三节有直接命令)。rundll32也被拦时/ga跑不了,只能靠已存在的对象 + 重连,或用户 GUI 手动加(坑 5)。 /ga后必须reg query确认,别只看 RC=0;验证时务必换一个有打印权限的用户登录再确认一次。