EDIT: I think it is coming from HKEY_USERS\.DEFAULT\Printers\ConvertUserDevModesCount
. I see all of the original and new printer connections listed in here as well as a ton of repeating \\CSR|<ServerName>\{<long GUID>}
entries. I found this article in a round about way which led me to look in this area.
I have a set of printers which deploy to computers via GPO. Today, I tried to change that printer mapping. The new printer mappings show up on the workstation, but the old ones are still being displayed.
However, prior to login, the user profile does not exist on the computer. Nothing in C:\Users, nothing in Advanced System Settings. Yes, I have a lot of computers to test on. Even if I remove the GPO which deploys printers, the original printers continue to show up in the "Devices and Printers" window.
If I delete the user from AD, and re-add a new user with same username and password, the original/old printers no longer show up.
Additionally, if I use powershell's get-printer
or wmic printer list brief
these original/old printers do NOT show up. They also do NOT show up in the registry under HKCU\Printers\Connections
but ALL of the proper / new printer mappings do. Yet, these old connections continue to show in the 'Devices and Printers' window. And, they continue to work properly.
These are hybrid Azure AD joined PCs. But, we do not have AD premium and there is no enterprise state roaming configured. We are not using roaming profiles. We are not redirecting folders to any network shares. No other settings seem to roam or appear. Files saved are gone. This seems to effect all or several users on the same machines including a 'guest' user who's profile is 'temporary' and deleted on every logoff.
HOW are these printers continuing to appear on computers that the user does not have a profile on and no GPO or script is deploying. Why do they show only in 'Devices and Printers' but not in wmic, powershell, or the registry? The user logged on to this computer and others in the past within our organization.
It appears to be a bug/problem with "Client Side Rendering" of print jobs in Windows IF the user profile is deleted through a mechanism like
Delprof
or theDelete user profiles older than a specified number of days on system restart
GPO.What I see is that the printer connections for each user are stored here:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider
These settings are reapplied to a user account when they login even after the profile has been deleted through one of the above mechanisms. So, previously installed printers reappear. These have been referred else where as "Ghost Printers" or "Phantom Printers."
We use the "Delete user profiles older than..." GPO in our PC lab to keep them somewhat clean from all the different users logging in. So, within this same policy I applied the fix mentioned in other places on the internet. Create 4 new registry entries with GPO:
A reboot of the computer and when the user logs in the old printers are gone.
In addition, I believe this is directly related to a problem where the printers would not deploy many times on the first login of a user. The printers will only apply after logging off and logging back in, or using
gpupdate
. The primary error recorded in the Application Event Log isThe 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.
So far, I have tested several scenarios and both the issues are resolved. In essence, if the user has previously logged on to the computer but the profile has since been deleted, they will have problems with old printers showing up and/or printers not connecting on first logon due to the problems described above.