[решено] Удаление принтеров из командной строки
Все спрашивают про установку принтеров, а я вот хочу спросить про удаление:
как из коммандной строки удалить ВСЕ установленные в системе принтера? то биш добавить: "rundll32 printui.dll,PrintUIEntry /in /n \\machine\printer" добавляет сетевой принтер а вот удалить как? при условии, что имя принтера(принтеров) в системе не известны? |
Я бы это сделал так....
REG DELETE "HKEY_CURRENT_USER\Printers\Connections" /f PS: удаляется весь раздел со всем содержимым, после перезагрузки раздел восстановиться. |
Работает
очень биг сенькс если ставить принтер сразу после удаления - перезагрузка не нужна :-) |
элегантно !!V Telm,
|
Вот пример для удаления всех сетевых принтеров
:// Удаляем все имеющиеся сетевые принтеры. For /F "Tokens=1,2 Skip=1" %%i In ('WMIC Printer Where Network^=TRUE Get ShareName^,ServerName^,WorkOffLine') Do rundll32 printui.dll,PrintUIEntry /dn /q /n%%i\%%j |
a как удалить конкретный принтер?
|
KipFun, пример удаления локального принтера:
Код:
rundll32.exe printui.dll,PrintUIEntry /dl /n "Microsoft XPS Document Writer" /q |
Petya V4sechkin, Спасибо! все сработало!
|
Цитата:
|
пытаюсь удалить сетевой принтер командой
rundll32.exe printui.dll,PrintUIEntry /dn /n "ИмяПринтера" выдаёт ошибку: "Не удаётся подключение принтера. Введено неправильное имя принтера или указанный принтер утерял подключение к серверу" имя принтера ввожу точно правильно сервера на котором был подключен принтер уже не существует параметр /dn согласно справке - "удаление подключения к сетевому принтеру" Если же стандартно удалять руками через Пуск - Принтеры и факсы, то удаляется без проблем способа удалить такой принтер через командную строку пока не нашел ......... P.S. попробовал тот же трюк с подключенным рабочим сетевым принтером - та же ошибка |
Цитата:
\\сервер\принтер Есть и другие способы. Например, стандартный Prnmngr.vbs в папке \WINDOWS\system32 или VBS в две строчки: Код:
Set WshNetwork = WScript.CreateObject("WScript.Network") |
Цитата:
|
Нашел через поиск в реестре такой вариант удаления локального принтера
надо просто удалить ветку реестра Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Имя_локального_принтера |
Всем здравствуйте.
Пожалуйста, напишите альтернативные способы удаления локального принтера Microsoft XPS Document Writer rundll32.exe - уже есть Хочется VBS, WMIC |
SharkyEXE, есть стандартный Prnmngr.vbs (в XP/2003 - в папке \WINDOWS\system32, в последующих ОС - в папке \Windows\System32\Printing_Admin_Scripts\локаль).
Примеры |
Petya V4sechkin
Здравствуйте. Как я понял Prnmngr.vbs или https://winitpro.ru/index.php/2014/0...i-v-windows-8/ - это VBS язык Есть или нет у Вас информация, как удалить, используя WMIC? Спасибо. |
Цитата:
Код:
wmic.exe Printer where "DeviceID='Epson Stylus C20 Series (M)'" delete P.S. Обратите внимание, что сам драйвер при этом не удаляется. |
Iska
Здравствуйте. 1) Цитата:
Код:
Microsoft XPS Document Writer Цитата:
|
Цитата:
Код:
Option Explicit |
Цитата:
Заметил некую бяку - этот скрипт, файл с расширением 1.vbs Код:
Option Explicit Если просто запустить файл 1.vbs - принтер не удалится Бяка в том, что если на файле 1.vbs парвой кнопкой мышки нажать - не будет строки Запуск с парвами администратора Пожалуйста, научите, можно или нет внутрь файла 1.vbs чего-то написать, чтобы файл 1.vbs запускался с парвами администратора? PS. Нашел еще одну версию удалить принтер при помощи vbs перейти - 1.vbs Код:
' https://www.vbsedit.com/scripts/printing/client/scr_1126.asp |
Цитата:
Цитата:
Цитата:
Мне-то и незаметно было: я работаю из-под Far Manager'а, который запускаю с административными привилегиями, посему и все дочерние процессы, запущенные из-под него, также наследуют эти привилегии. Попробуйте ещё такой код: Код:
Option Explicit |
Цитата:
2) Этот код Код:
Option Explicit PS. Если выключить Контроль учетных записей (ползунок в самый вниз), перезагрузить компьютер, просто два раза мышкой - удаляется PPS. Было бы замечательно, если не выключая Контроль учетных записей, просто два раза мышкой - удалялось бы или запрашивался Запуск от имени администратора, вылазила бы табличка |
Может быть кому интересно, здесь перейти есть решение
Скрипт перейти с учетом этого решения - файл 1.vbs Код:
Const DQ = """", HKLM = &H80000002, KQV = &H1, KSV = &H2 Система с ВЫКЛюченным контролем учетных записей ( ползунок в самый низ, перезагрузка компьютера ) - при запуске двойной клик левой кнопкой мышки по файлу 1.vbs - ничего не вылазиет - принтер удаляется Отлично, то что надо! |
SharkyEXE, у меня включён контроль учётных записей, пользователь входит в группу Администраторы, я открываю интерпретатор команд (без повышения привилегий), исполняю любой из двух приведённых мною скриптов (опять-таки — без повышения привилегий), и ранее установленный принтер удаляется. Windows 7 SP1 x64.
|
Iska
Здравствуйте. Я написал так, как мне привычнее :) Кому-то, может быть, как мне, проще чуть больше кода, зато наверняка Тут больше - чтое сть возможность, так сказать, два в одном, и скрипт на VBS, и если требуется - будет запрос о повышении прав, если не требуется - сообщения не будет, все в одном файле, а не какие-то ярлыки, через чужого запуск и прочее, здесь - все в одном месте |
SharkyEXE, я написал лишь о том, что у меня, в моих конкретных условиях, отрабатывает и без повышения привилегий до административных.
|
Iska
Понятно. PS. Вы бы не могли, пожалуйста, эту строку Код:
WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Fax'").Delete_ |
Например, так:
Скрытый текст
Код:
AutoItSetOption("MustDeclareVars", 1) |
Iska
А никак нельзя в одну строку соединить эту команды, пожалуйста? Код:
Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator") |
Цитата:
Код:
(ObjCreate("WbemScripting.SWbemLocator")).ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Epson Stylus C20 Series (M)'").Delete_ Код:
#AutoIt3Wrapper_Run_Au3Check=N |
Iska
Спасибо. 1) В коде, как я понял, это будет так Код:
#AutoIt3Wrapper_Run_Au3Check=N 2) А вручную как это делается, чтобы была одна строка Код:
(ObjCreate("WbemScripting.SWbemLocator")).ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Epson Stylus C20 Series (M)'").Delete_ |
Так — \Tools\Compile:
Скрытый текст
что, собственно, приводит к тому же — установке в коде: Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI **** Код:
"C:\Program Files\AutoIt3\Aut2Exe\Aut2exe_x64.exe" /in "C:\Мои проекты\0307\0001.au3" |
Цитата:
|
SharkyEXE, третий (и последний) принцип построения программ звучит так: «Наглядность».
|
Iska
Здравствуйте. Вы бы не могли, пожалуйста, эту строку Код:
wmic.exe Printer where "DeviceID='Epson Stylus C20 Series (M)'" delete Спасибо. |
SharkyEXE, я уже переводил по Вашей просьбе пару недель назад.
|
Iska
Здравствуйте. Прошу прощения, вполне возможно, я не так выразился, мне нужно, чтобы в файл 1.au3 написать строку типа Код:
wmic.exe Printer where "DeviceID='Epson Stylus C20 Series (M)'" delete Я методом тыка уже пробую Код:
RunWait(@ComSpec & ' /c ' & 'wmic.exe Printer where "DeviceID='Microsoft XPS Document Writer'" delete',"", @SW_HIDE) |
Цитата:
Код:
Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator") |
Iska
Здравствуйте. Для чего мне хотелось несколько способов удаления принтеров - wmic, vbs, cmd Я пишу скрипт на языке autoit, туда есть желание вставить способы удаления принтеров, используя wmic, vbs, cmd, чтобы запустить скрипт и принтеры удалились Ну вот хочется мне все способы удаления, что зедсь плохого то, не просто один споосб, а несколько способов |
SharkyEXE, это один и тот же способ. Вы можете стирать мел с доски белой тряпкой, чёрной тряпкой, хоть синей тряпкой — в основе будет лежать одна и та же технология, в данном случае — Wbem.
|
Iska
Здравствуйте. Тогда, если Вы знаете, будьте так любезны, напишите альтернативные, не Wbem способы удаления принтера? Я не знаток, не мага профессионал, просто я считал, что vbs или wmic - это разные способы удаления принтера Теперь мне хочется, если это возможно, разные методы, разные технологии удаления принтера Спасибо. |
Разве что:
Код:
rundll32.exe printui.dll,PrintUIEntry /n "Epson Stylus C20 Series (M)" /dl |
Iska
Здравствуйте. Итого, подъитог Абсолютно одинаковые способы удаления принтера (способы на Wbem, vbs = wmic, кому что нравится, можно использовать ОДНО ИЗ или сразу оба способа, функционально одно и тоже) vbs Код:
Option Explicit Код:
wmic.exe Printer where "DeviceID='Epson Stylus C20 Series (M)'" delete rundll32 Код:
rundll32.exe printui.dll,PrintUIEntry /n "Epson Stylus C20 Series (M)" /dl |
Угу. Только лучше будет написать как-то так:
Цитата:
|
Iska
Здравствуйте Я могу ошибаться, просьба поправить, но я когда использую код перейти, я код скомпилировал в exe файл, когда я запускаю exe файл, то если у меня нету принтера нету, то вываливается ошибка Суть - можно Вас попросить, пожалуйста, в коде сделать проверку, мол: 1) если принтер Epson Stylus C20 Series (M) найдется, то для принтера Epson Stylus C20 Series (M) сделать команду Код:
$oSWbemLocator.ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Epson Stylus C20 Series (M)'").Delete_ Код:
$oSWbemLocator.ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Epson Stylus C20 Series (M)'").Delete_ |
SharkyEXE, попробуйте, например, так:
Код:
AutoItSetOption("MustDeclareVars", 1) |
Время: 19:04. |
Время: 19:04.
© OSzone.net 2001-