Мне было поручено устранить неполадки сценария входа в систему на клиентском сайте, который, среди прочего, устанавливает принтер по умолчанию. Сценарий входа в систему - это 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
Это позволяет мне проверить принтер по умолчанию до и после попытки его изменить. Цикл, похоже, помог, но не решил проблему полностью. Иногда новый принтер настроен правильно, иногда я могу выйти из системы и снова включиться, и он не может установить тот же принтер по умолчанию. Чтобы уточнить, я не полный рабочий день админ. Эта техника устарела? Должен ли я использовать что-нибудь еще для установки принтера по умолчанию?
Изменить: Кроме того, нам нужно запомнить принтер по умолчанию, который пользователь мог установить или изменить во время своего пользовательского сеанса, а затем установить этот принтер по умолчанию
Поскольку у вас есть Server 2008 и Windows 7, у вас есть возможность установить принтер по умолчанию с помощью настроек групповой политики. Мы используем это прямо сейчас, чтобы установить принтеры по умолчанию в наших компьютерных лабораториях. Это действительно требует создания объекта групповой политики для этих контейнеров, но с ними можно получить довольно подробную информацию.
В редакторе групповой политики политика находится по адресу ...
Конфигурация пользователя -> Настройки -> Настройки панели управления -> Принтеры
Добавьте туда принтеры. Один из флажков - «сделать принтер по умолчанию». Это действительно работает.
Вместо использования сетевого объекта я запускаю команду напрямую: rundll32 printui.dll, PrintUIEntry / y / n "" вроде работает нормально