
Recebi a tarefa de solucionar um script de logon em um site de cliente que, entre outras coisas, define a impressora padrão. O script de logon é vbscript com a impressora sendo configurada usando
Set WshNetwork = CreateObject("WScript.Network")
...
WshNetwork.SetDefaultPrinter(strPrinter)
O técnico que configurou disse que estava funcionando. O cliente disse que não. Meu teste mostra que funciona apenas de forma intermitente. Atualmente tenho algo assim:
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
Isso me permite verificar a impressora padrão antes e depois de tentar alterá-la. O loop parece ter ajudado, mas não resolveu totalmente o problema. Às vezes, a nova impressora está configurada corretamente, às vezes consigo fazer logoff e logon novamente e ela não consegue definir a mesma impressora padrão. Para esclarecer, estounãoum administrador em tempo integral. Esta técnica está desatualizada? Devo usar outra coisa para definir a impressora padrão?
Editar: Além disso, precisamos lembrar a impressora padrão que o usuário pode ter definido ou alterado durante a sessão do usuário e, em seguida, definir essa impressora como padrão
Responder1
Como você possui o Server 2008 e o Windows 7, você pode definir uma impressora padrão por meio das Preferências de Política de Grupo. Estamos usando isso agora para definir impressoras padrão em nossos laboratórios de informática. É necessário criar um GPO para esses contêineres, mas você pode obter bastante granularidade com eles.
No Editor de Política de Grupo, a política está localizada em...
Configuração do usuário -> Preferências -> Configurações do painel de controle -> Impressoras
Adicione impressoras lá. Uma das caixas de seleção é "tornar a impressora padrão". Realmente funciona.
Responder2
Em vez de usar o objeto Rede, estou executando o comando diretamente: rundll32 printui.dll,PrintUIEntry /y /n "" parece estar funcionando bem