我负责对客户站点的登录脚本进行故障排除,该脚本除其他外还设置了默认打印机。登录脚本是 vbscript,打印机设置使用
Set WshNetwork = CreateObject("WScript.Network")
...
WshNetwork.SetDefaultPrinter(strPrinter)
安装它的技术人员说它能正常工作。客户说它不能。我的测试表明它只能间歇性地工作。目前我得到了如下结果:
WScript.Echo GetDefaultPrinter
For i = 0 to 50
if strPrinter <> GetDefaultPrinter then
WshNetwork.SetDefaultPrinter(strPrinter)
end if
Next
'WshNetwork.SetDefaultPrinter("Fax")
Msgbox("Called WshNetwork.SetDefaultPrinter(" & strPrinter & ")")
WScript.Echo GetDefaultPrinter
Function GetDefaultPrinter
sComputer = "."
Set oWMIService = GetObject("winmgmts:\\" & sComputer & "\root\cimv2")
Set colItems = oWMIService.ExecQuery("Select * from Win32_Printer",,48)
For Each oItem in colItems
If (oItem.Attributes And 2^(3-1)) = 4 Then
sDefault = oItem.Name
Exit For
End If
Next
GetDefaultPrinter = sDefault
End Function
这让我可以在尝试更改默认打印机之前和之后检查它。循环似乎有所帮助,但并没有完全解决问题。有时新打印机设置正确,有时我可以注销并再次登录,但它无法设置相同的默认打印机。澄清一下,我不是全职管理员。这种技术过时了吗?我应该使用其他东西来设置默认打印机吗?
编辑:此外,我们需要记住用户在用户会话期间可能设置或更改的默认打印机,然后将该打印机设置为默认打印机
答案1
由于您拥有 Server 2008 和 Windows 7,因此您可以通过组策略首选项设置默认打印机。我们现在使用它来设置计算机实验室中的默认打印机。它确实需要为这些容器创建一个 GPO,但您可以对它们进行非常细致的设置。
在组策略编辑器中,该策略位于...
用户配置 -> 首选项 -> 控制面板设置 -> 打印机
在其中添加打印机。其中一个复选框是“设为默认打印机”。它确实有效。
答案2
我没有使用网络对象,而是直接运行命令:rundll32 printui.dll,PrintUIEntry /y /n“”似乎运行正常