Изменение драйвера принтера с помощью PrintUI в Windows 7 - PullRequest
0 голосов
/ 04 апреля 2011

У меня около 200 идентичных локальных принтеров марки / модели, установленных по всему зданию.Проблема в том, что при установке по умолчанию на клиенте устанавливаются два драйвера, но по умолчанию устанавливается неверный драйвер.Чтобы изменить его вручную, я щелкаю правой кнопкой мыши на принтере, выбираю «Свойства принтера», открываю вкладку «Дополнительно», меняю выбор драйвера и нажимаю «ОК».

Мне нужно сделать это для всех остальных,но, надеюсь, не обязательно посещать каждую машину вручную.Я просмотрел несколько сценариев WMI и примеры использования PrintUI.exe (printui.dll).Я могу изменить выбор драйвера, используя следующий синтаксис printui:

printui / Xs / n "HP LaserJet 8888 PCL 5" DriverName "HP LaserJet 8890 PCL 5"

И это похоже на работу.Но проблема в том, что после того, как я запустил эту команду, в следующий раз, когда я щелкну правой кнопкой мыши на принтере и выберу «Свойства принтера», мне будет предложено переустановить драйвер принтера с помощью мастера.Есть ли лучший способ или способ обойти это?

Ответы [ 2 ]

1 голос
/ 13 января 2015

поздно, но, возможно, может помочь ... если вы используете .inf-файл.

>>>> Чтобы сделать это без мастера, драйвер должен быть подписан.

Windows 7 :

УСТАНОВКА:

  • Первая команда установки: RUNDLL32 PRINTUI.DLL,PrintUIEntry /if /b "Printer name" /f "driver.inf" /r "com1" /m "driver model name" /h "Intel"
  • Вторая команда задает принтер по умолчанию:RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "Printer name"
  • Для установки вам понадобится всего одна команда.Можно изменить «com1», если вы используете usb, выбрал наиболее общий «usb001».

UNINSTALL:

Чтобы удалить принтер, вам нужно 3 команды и строго следовать последовательности:

  1. Во-первых, вам нужно удалить все принтеры с тем именем, которое вы видите в «устройстве и принтерах»: RUNDLL32 PRINTUI.DLL,PrintUIEntry /dl /n "Printer Name" /h "Intel"
  2. Вторая команда - удалить принтерводитель: RUNDLL32 PRINTUI.DLL,PrintUIEntry /dd /m "driver model name" /h "Intel".После этого вы не сможете увидеть принтер и драйвер, но если вы отсоедините USB-разъем и подключите его снова, драйвер автоматически установится.Это связано с тем, что Windows добавляет пакет установки драйвера в C:\Windows\System32\DriverStore\FileRepository, и нам нужно удалить его с помощью третьей команды.
  3. Третья команда удалит файл oem * .inf, который создается Windows при установке драйвера.Для выполнения этой задачи вам понадобятся 2 команды, первая из которых - поиск имени oem * .inf для созданных вами окон: используйте этот pnputil.exe -e, чтобы показать все oem * .inf, и с именем в руках используйте этот * 1036.* (измените имя файла oem5.inf так, чтобы он соответствовал вашему inf-файлу)

Я использовал эти команды программно, за исключением поиска по имени oem * .inf, которое вам нужно проанализировать для всехINF-файлы в C:\Windows\Inf\.

Существует поведение, которое необходимо соблюдать при использовании cli для установки ... не выполняйте две установки для одного и того же принтера, окна создадут случайное имя, как вы устанавливаете принтер B, и окна переименуют в принтер B(copy_A) или что-то еще, если принтер B уже существует.А если вам нужно удалить, вам нужно будет удалить два принтера, прежде чем перейти ко второй команде для удаления драйвера.

Иногда лучше удалить все и установить заново.

Также см.код о devcon: https://code.msdn.microsoft.com/windowshardware/DevCon-Sample-4e95d71c

и подробности о командах: http://www.robvanderwoude.com/2kprintcontrol.php

0 голосов
/ 05 апреля 2011

Я попробовал вашу командную строку в Windows XP, и она работала для меня, не вызывая мастера печати. Я использовал два драйвера, которые были частью самой ОС XP. Это то, что я использовал -

rundll32 printui.dll PrintUIEntry / Xs / n "HP Color LaserJet 4550 PCL" DriverName "HP C LaserJet 4500-PS"

Может быть, вы захотите проверить это снова. Возможно, в Win7 есть какие-то дополнительные вещи, которые PrintUI не делает правильно?

Однако, одно слово предостережения. Когда вы таким образом переключаете драйверы в очереди, вы теряете настройки старой очереди. Если это нормально, тогда идти по этому пути будет хорошо.

Теперь, если вы хотите изменить очередь печати по умолчанию на каждом клиенте, вам следует использовать эту командную строку - скажем, для установки «HP Color LaserJet 4550 PCL» в качестве используемой очереди -

rundll32 printui.dll, PrintUIEntry / y / n "HP Color LaserJet 4550 PCL"

Дайте мне знать, если это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...