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 ;;;;;;;;;;;;;
希望这能有所帮助。谢谢。