
Se me asignó la tarea de solucionar problemas de un script de inicio de sesión en el sitio de un cliente que, entre otras cosas, configura la impresora predeterminada. El script de inicio de sesión es vbscript y la impresora se configura usando
Set WshNetwork = CreateObject("WScript.Network")
...
WshNetwork.SetDefaultPrinter(strPrinter)
El técnico que lo configuró dijo que estaba funcionando. El cliente dijo que no. Mis pruebas muestran que funciona sólo de forma intermitente. Actualmente tengo algo como esto:
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
Esto me permite verificar la impresora predeterminada antes y después de intentar cambiarla. El bucle parece haber ayudado, pero no ha resuelto el problema por completo. A veces, la nueva impresora está configurada correctamente, a veces puedo cerrar sesión y volver a iniciarla y no puede configurar la misma impresora predeterminada. Para aclarar, soynoun administrador de tiempo completo. ¿Esta técnica está desactualizada? ¿Debería usar algo más para configurar la impresora predeterminada?
Editar: Además, debemos recordar la impresora predeterminada que el usuario puede haber configurado o cambiado durante su sesión de usuario y luego configurar esa impresora como predeterminada.
Respuesta1
Como tiene Server 2008 y Windows 7, tiene la posibilidad de configurar una impresora predeterminada a través de las Preferencias de política de grupo. Lo estamos usando ahora mismo para configurar impresoras predeterminadas en nuestros laboratorios de computación. Es necesario crear un GPO para estos contenedores, pero puede ser bastante granular con ellos.
En el Editor de políticas de grupo, la política se encuentra en...
Configuración de usuario -> Preferencias -> Configuración del panel de control -> Impresoras
Agregue impresoras allí. Una de las casillas de verificación es "configurar impresora predeterminada". Realmente funciona.
Respuesta2
En lugar de usar el objeto Red, estoy ejecutando el comando directamente: rundll32 printui.dll,PrintUIEntry /y /n "" parece estar funcionando bien