通过组策略将 2003R2 中的默认打印机设置为 XP

通过组策略将 2003R2 中的默认打印机设置为 XP

Win 2003 R2 设置。我可以通过组策略和 pushprinterconnections.exe 推送打印机,但打印机未设置为默认打印机。关于如何通过组策略为 XP 机器设置默认打印机,您有什么想法吗?

答案1

过去我使用启动脚本来完成此操作。

使用 wscript:

    Set WSHNetwork = CreateObject("WScript.Network")
    WSHNetwork.SetDefaultPrinter "[PRINTER_NAME]"

取自此链接

答案2

在您的评论中回答你提到了时间问题。在我们的系统上,我通过在以下位置添加脚本来调用设置默认打印机的脚本

用户配置 - 模板 - 系统/登录 - 登录时运行程序

“登录时运行程序”下的程序在配置文件加载完成之后以及 Windows 资源管理器启动之后运行。我不能 100% 确定这是否能解决所有情况下的计时问题,但对我来说它有效。

答案3

这是一个令人非常恼火的问题。第一个问题是默认打印机设置是特定于用户的。第二个问题(如您在给 Jimmie 的评论中指出的)是,即使使用每个用户的登录脚本,也存在时间问题,即打印机在技术上尚不存在或 HKCU 配置单元尚未完成加载。

在我们遇到的这种情况中,我们最终的做法基本上是使用一个登录脚本,该脚本循环查找打印机是否存在,然后再尝试将其设置为默认打印机。如果在一定时间后找不到它,它就会放弃。

答案4

我们有些学区使用 R2 打印部署来为实验室提供服务。为了解决 R2 遗漏的这一功能,我们使用基克斯塔特提供帮助。这将有助于您为特定实验室的用户部署打印机。这还将提供等待 Windows 添加打印机所需的延迟。

实验室有命名惯例。HS101-01、HS101-02、HS102-01、HS102-02 等

使用组策略对象中的 kixtart 启动脚本,我们让 kix32.exe 在下面执行此脚本。

;Capture room number
$pos = INSTR(@WkSta, "-");
IF $pos > 0
    $Room = LEFT(@WkSta, ($pos - 1));
    ; ? $Room
ELSE
    $Room = @WkSta;
ENDIF


SLEEP 45   ; Give the computer time to log in and add the printer

;;;;;;;;;;;;; BEGIN PRINTER DEFAULTS LIST ;;;;;;;;;;;;

SELECT

    Case $Room = "HS71"
        SetDefaultPrinter("\\nebsdfs\HS71 - HP LaserJet 4100 Series PCL")

    Case $Room = "HS086"
        SetDefaultPrinter("\\nebsdfs\HS086 - HP LaserJet 4000")

    Case $Room = "ES102"
        SetDefaultPrinter("\\nebsdfs\ES102 - HP LaserJet 4000")


ENDSELECT

;;;;;;;;;;;;;; END PRINTER DEFAULTS LIST ;;;;;;;;;;;;;

希望这能有所帮助。谢谢。

相关内容