This isn't specific to Xerox. I've seen it with a multitude of various printers from different manufacturers, but I've only ever seen it happen on Windows Server operating systems, not clients. The only method of preventing it that actually seems to work, is to set the following registry key:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider]
"RemovePrintersAtLogoff"=dword:00000000
Cleanup is a highly manual process, and close to what @Kajbl posted earlier. This should only be done after you've deployed that key. You'll need PsExec. Here's what you'll need to do.
First, open an elevated powershell session:
Stop-Service spooler -Force
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections" -Recurse
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" -Recurse
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers" -Recurse
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\V4 Connections" -Recurse
Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Print\Connections" -Recurse
Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Print\Printers" -Recurse
Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Print\Providers" -Recurse
Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Print\V4 Connections" -Recurse
Remove-Item -Path "HKCU:\Printers" -Recurse
Remove-Item -Path "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts" -Recurse
Remove-Item -Path "Registry::HKEY_USERS\.DEFAULT\Printers" -Recurse
You might get a bunch of errors about nonexistent keys. Disregard them and move on to the next step.
Then, open an elevated command prompt and run the following command -- this is necessary because you need a powershell session running within the SYSTEM
security context:
C:\Path\To\PsExec.exe -i -s powershell
Then copy and paste the following into your nested powershell session:
Remove-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Enum\SWD\PRINTENUM" -Recurse
Remove-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceClasses\{0ecef634-6ef0-472a-8085-5ad023ecbccd}" -Recurse
Remove-Item -Path "HKLM:\SYSTEM\ControlSet001\Enum\SWD\PRINTENUM" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\SYSTEM\ControlSet001\Control\DeviceClasses\{0ecef634-6ef0-472a-8085-5ad023ecbccd}" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\SYSTEM\ControlSet002\Enum\SWD\PRINTENUM" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\SYSTEM\ControlSet002\Control\DeviceClasses\{0ecef634-6ef0-472a-8085-5ad023ecbccd}" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{1ed2bbf9-11f0-4084-b21f-ad83a8e6dcdc}" -Recurse
Reboot immediately.