编辑:我认为它来自HKEY_USERS\.DEFAULT\Printers\ConvertUserDevModesCount
。我看到这里列出了所有原始和新的打印机连接以及大量重复\\CSR|<ServerName>\{<long GUID>}
条目。我发现这个文章绕了一圈才让我来到这个区域。
我有一组通过 GPO 部署到计算机的打印机。今天,我尝试更改该打印机映射。新的打印机映射显示在工作站上,但旧的打印机映射仍显示。
但是,在登录之前,用户配置文件不存在于计算机上。C:\Users 中没有任何内容,高级系统设置中也没有任何内容。是的,我有很多计算机要测试。即使我删除了部署打印机的 GPO,原始打印机仍会继续显示在“设备和打印机”窗口中。
如果我从 AD 中删除用户,并重新添加具有相同用户名和密码的新用户,则原始/旧打印机将不再显示。
此外,如果我使用 powershellget-printer
或wmic printer list brief
这些原始/旧打印机不会显示。它们也不会显示在注册表中,HKCU\Printers\Connections
但所有正确/新的打印机映射都会显示。然而,这些旧连接继续显示在“设备和打印机”窗口中。而且,它们继续正常工作。
这些是混合 Azure AD 加入的 PC。但是,我们没有 AD Premium,也没有配置企业状态漫游。我们没有使用漫游配置文件。我们没有将文件夹重定向到任何网络共享。似乎没有其他设置漫游或出现。保存的文件不见了。这似乎影响了同一台机器上的所有或几个用户,包括配置文件为“临时”且每次注销时都会被删除的“来宾”用户。
这些打印机为什么会继续出现在用户没有配置文件且没有部署 GPO 或脚本的计算机上。为什么它们只显示在“设备和打印机”中,而不显示在 wmic、powershell 或注册表中?用户过去曾登录过这台计算机以及我们组织内的其他计算机。
答案1
如果通过类似 GPO 的机制删除用户配置文件,Delprof
则这似乎是 Windows 中打印作业的“客户端渲染”的一个错误/问题Delete user profiles older than a specified number of days on system restart
。
我看到的是每个用户的打印机连接都存储在这里:Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider
即使配置文件已通过上述机制之一删除,用户登录时这些设置仍会重新应用于用户帐户。因此,之前安装的打印机会重新出现。这些打印机在其他地方被称为“幽灵打印机”或“幻影打印机”。
我们在 PC 实验室中使用“删除早于...的用户配置文件”GPO,以使它们免受所有不同用户登录的影响。因此,在同一策略中,我应用了互联网上其他地方提到的修复程序。使用 GPO 创建 4 个新的注册表项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider]
"InactiveGuidPrinterAge"=dword:00000384
"ActiveGuidPrinterAge"=dword:00000384
"InactiveGuidPrinterTrim"=dword:00000384
"RemovePrintersAtLogoff"=dword:00000001
重新启动计算机并当用户登录时旧打印机就消失了。
此外,我认为这与用户首次登录时打印机无法多次部署的问题直接相关。打印机仅在注销并重新登录或使用后才会应用gpupdate
。应用程序事件日志中记录的主要错误是The user '<printer name>' preference item in the 'Connect Printers {<GUID>}' Group Policy Object did not apply because it failed with error code '0x80070057 The parameter is incorrect.' This error was suppressed.
到目前为止,我已经测试了几种情况,两个问题都得到了解决。本质上,如果用户之前登录过计算机,但配置文件已被删除,由于上述问题,他们将遇到旧打印机无法显示和/或打印机在首次登录时无法连接的问题。