Назад | Перейти на главную страницу

Сценарии входа в Windows 7 - установить принтер по умолчанию

Мне было поручено устранить неполадки сценария входа в систему на клиентском сайте, который, среди прочего, устанавливает принтер по умолчанию. Сценарий входа в систему - это 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 "" вроде работает нормально