本文介绍如何更改使用漫游配置文件漫游的打印机的行为。
适用于:Windows 10 - 所有版本原始 KB 数: 304767
重要
本文包含有关修改注册表的信息。 在修改注册表之前,请务必备份注册表并确保您知晓如何在出现问题时还原注册表。 有关如何备份、还原和编辑注册表的信息,请单击以下文章编号以查看Microsoft知识库中的文章:
256986 Windows 注册表Microsoft说明
总结
根据设计,当用户使用漫游配置文件时,该用户的默认打印机会随用户配置文件一起漫游。 但是,在某些环境中,这可能不是所需的行为。 本文提供了可用于更改此行为的方法。
详细信息
警告
如果注册表编辑器使用不当,则可能会产生严重问题,导致重新安装操作系统。 Microsoft 无法保证可以解决因注册表编辑器使用不当而造成的问题。 请慎用注册表编辑器,风险自负。
重要
本文中的信息旨在供公司管理员使用。 在环境中使用本文中所述的任何方法之前,应全面测试测试环境中的方法。
打印机设计为使用用户的漫游配置文件进行漫游,这就是为什么默认打印机存储在注册表HKEY_CURRENT_USER分支下的原因。 若要更改此行为,请使用以下任一方法。
方法 1
导出已安装打印机的默认打印机设置,然后在用户登录到计算机时将该设置合并到用户配置文件中:
-
使用注册表编辑器(Regedit.exe)导出以下注册表项:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows -
使用文本编辑器修改在步骤 1 中创建的注册表(.reg)文件,以便键下方的唯一注册表值名称为:
“Device”=...
注意
注册表文件应包含文件底部的空白行。
-
使用注册表编辑器(Regedit.exe)在以下注册表项下添加新的 ResetPrinter 字符串值:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run -
ResetPrinter 值的值应类似于以下值:
REGEDIT.EXE -S 路径*File.reg* 其中 File.reg 用于存储默认打印机的名称。
方法 2
如果特定区域中的计算机包含类似的计算机名称,则可以使用与计算机名称中的特定字符集匹配的 .vbs 脚本文件,并安装相应的打印机。 此方法中包含的示例代码只需要修改 IF 行。 例如,代码中的第一个 IF 语句转换为“如果计算机名称包含文本”LAB1-“,然后将默认打印机设置为”\LAB1\LaserJet”。 若要完成此方法,
-
将以下示例 VBS 代码复制到 vbs 文件中,例如 Defaultprinter.vbs:
Option Explicit DIM RegEntry, ComputerName RegEntry="HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName" ComputerName = ReadRegValue(RegEntry) if InStr(1,ucase(ComputerName),"LAB1-",vbTextCompare) > 0 then call SetPrinter("\\LAB1\LaserJet") if InStr(1,ucase(ComputerName),"LAB2-",vbTextCompare) > 0 then call SetPrinter("\\LAB2\LaserJet") if InStr(1,ucase(ComputerName),"OFFICE-",vbTextCompare) > 0 then call SetPrinter("\\OFFICE\LaserJet") 'so on and so forth. wscript.quit '*** This subroutine installs and sets the default printer Sub SetPrinter(ByVal PrinterPath) DIM WshNetwork Set WshNetwork = CreateObject("WScript.Network") WshNetwork.AddWindowsPrinterConnection(PrinterPath) WshNetwork.SetDefaultPrinter Printerpath end sub '**** This function returns the data in the registry value Function ReadRegValue(ByVal RegValue) DIM WSHShell Set WSHShell = WScript.CreateObject("WScript.Shell") ReadRegValue="" On Error Resume Next ReadRegValue= WSHShell.RegRead(RegValue) End Function -
根据需要修改 IF 行。 需要修改的 IF 行的唯一部分是在双引号之间。 可能需要添加其他 IF 行。
-
使用注册表编辑器在以下注册表项下创建 ResetPrinter 字符串值:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run -
ResetPrinter 的值应类似于以下值:
WSCRIPT.EXE path\DefaultPrinter.vbs 其中 路径 是存储 Defaultprinter.vbs 文件的位置。
注意
还可以从登录脚本而不是运行密钥运行 Defaultprinter.vbs 文件。 本文中所述的两种方法都重置了用户配置文件设置为打印到的默认打印机。 此外,如果本文中包含的示例脚本未正确运行,则可能需要升级或安装 Windows 脚本主机。
Microsoft 提供的编程示例仅用于进行说明,而不提供明示或默示担保。 这包括但不限于适销性或对特定用途的适用性的默示担保。 本文假设您熟悉正在演示的编程语言和用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能,但他们不会修改这些示例以提供新增功能或构建步骤以满足你的特定需要。