Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 2000/XP » Разное - [решено] Удаление принтеров из командной строки

Ответить
Настройки темы
Разное - [решено] Удаление принтеров из командной строки

Аватара для denzill

Новый участник


Сообщения: 28
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: denzill
Дата: 07-03-2006
Описание: (solved)
Все спрашивают про установку принтеров, а я вот хочу спросить про удаление:
как из коммандной строки удалить ВСЕ установленные в системе принтера?
то биш добавить: "rundll32 printui.dll,PrintUIEntry /in /n \\machine\printer"
добавляет сетевой принтер
а вот удалить как?
при условии, что имя принтера(принтеров) в системе не известны?

-------
Меняю топор системы Раскольникова на автомат системы Калашникова


Отправлено: 12:47, 06-03-2006

 

Ветеран


Contributor


Сообщения: 27628
Благодарности: 8079

Профиль | Отправить PM | Цитировать


Цитата SharkyEXE:
Лично я от Вас первый раз в этой теме вижу этот код, »
Я имел в виду этот:
Цитата Petya V4sechkin:
есть стандартный Prnmngr.vbs (в XP/2003 - в папке \WINDOWS\system32, в последующих ОС - в папке \Windows\System32\Printing_Admin_Scripts\локаль). »
код.

Цитата SharkyEXE:
можно или нет внутрь файла 1.vbs чего-то написать, чтобы файл 1.vbs запускался с парвами администратора? »
Нет. Внутрь скрипта ничего нельзя написать, чтобы он сам запускался с административными привилегиями. Вы можете запускать с административными привилегиями хост, исполняемый файл cscript.exe/wscript.exe, параметром которого будет скрипт.

Мне-то и незаметно было: я работаю из-под Far Manager'а, который запускаю с административными привилегиями, посему и все дочерние процессы, запущенные из-под него, также наследуют эти привилегии.

Попробуйте ещё такой код:
Код: Выделить весь код
Option Explicit

Const wbemImpersonationLevelImpersonate = 3
Const wbemPrivilegeLoadDriver           = 9

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
	With .Security_
		.ImpersonationLevel = wbemImpersonationLevelImpersonate
		.Privileges.Add wbemPrivilegeLoadDriver
	End With
	
	On Error Resume Next
	.Get("Win32_Printer.DeviceID='Epson Stylus C20 Series (M)'").Delete_
	On Error Goto 0
End With

WScript.Quit 0
Если и он не будет удалять с обычными, не повышенными, привилегиями — то не знаю, у меня отрабатывает.

Отправлено: 21:34, 23-03-2020 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 888
Благодарности: 86

Профиль | Отправить PM | Цитировать


Цитата Iska:
Я имел в виду этот: »
1) Я не понимаю, как из много текста Вы сделали мало - работает и славно
2) Этот код
Код: Выделить весь код
Option Explicit

Const wbemImpersonationLevelImpersonate = 3
Const wbemPrivilegeLoadDriver           = 9

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
	With .Security_
		.ImpersonationLevel = wbemImpersonationLevelImpersonate
		.Privileges.Add wbemPrivilegeLoadDriver
	End With
	
	On Error Resume Next
	.Get("Win32_Printer.DeviceID='Microsoft XPS Document Writer'").Delete_
	On Error Goto 0
End With

WScript.Quit 0
Просто два раза мышкой - не удаляется, только командная строка с правами администратора + запуск файла
PS. Если выключить Контроль учетных записей (ползунок в самый вниз), перезагрузить компьютер, просто два раза мышкой - удаляется
PPS. Было бы замечательно, если не выключая Контроль учетных записей, просто два раза мышкой - удалялось бы или запрашивался Запуск от имени администратора, вылазила бы табличка

Последний раз редактировалось SharkyEXE, 23-03-2020 в 22:08.


Отправлено: 21:43, 23-03-2020 | #22


Ветеран


Сообщения: 888
Благодарности: 86

Профиль | Отправить PM | Цитировать


Может быть кому интересно, здесь перейти есть решение

Скрипт перейти с учетом этого решения - файл 1.vbs
Код: Выделить весь код
Const DQ = """", HKLM = &H80000002, KQV = &H1, KSV = &H2
SET colOS = GetObject("winmgmts:\root\cimv2").ExecQuery("Select * from Win32_OperatingSystem")
FOR EACH oOS IN colOS
 strOSLong = oOS.Version
NEXT
IF Left(strOSLong, 1) > "5" THEN
    IF NOT isAdminRights THEN
  SET oShellApp = CreateObject("Shell.Application")
  oShellApp.ShellExecute WScript.FullName, DQ & WScript.ScriptFullName & DQ, "", "runas", 1
  WScript.Quit
    END IF
END IF
''''''''''Begin of code''''''''''''''''''''''''''''''

' Option Explicit

On Error Resume Next

WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Microsoft XPS Document Writer'").Delete_
WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Fax'").Delete_

WScript.Quit 0

''''''''''End of code''''''''''''''''''''''''''''''''
FUNCTION isAdminRights()
 SET oReg = GetObject("winmgmts:root\default:StdRegProv")
 strKey = "System\CurrentControlSet\Control\Session Manager"
 intErrNum = oReg.CheckAccess(HKLM, strKey, KQV + KSV, flagAccess)
 isAdminRights = flagAccess
END FUNCTION
Система с ВКЛюченным контролем учетных записей ( ничего не менял) - при запуске двойной клик левой кнопкой мышки по файлу 1.vbs - вылазиет стандартное окно Контроль учетных записей пользователей, кнопки Да или Нет, нажимаем Да - принтер удаляется

Система с ВЫКЛюченным контролем учетных записей ( ползунок в самый низ, перезагрузка компьютера ) - при запуске двойной клик левой кнопкой мышки по файлу 1.vbs - ничего не вылазиет - принтер удаляется

Отлично, то что надо!

Последний раз редактировалось SharkyEXE, 23-03-2020 в 22:29.


Отправлено: 22:20, 23-03-2020 | #23


Ветеран


Contributor


Сообщения: 27628
Благодарности: 8079

Профиль | Отправить PM | Цитировать


SharkyEXE, у меня включён контроль учётных записей, пользователь входит в группу Администраторы, я открываю интерпретатор команд (без повышения привилегий), исполняю любой из двух приведённых мною скриптов (опять-таки — без повышения привилегий), и ранее установленный принтер удаляется. Windows 7 SP1 x64.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:46, 23-03-2020 | #24


Ветеран


Сообщения: 888
Благодарности: 86

Профиль | Отправить PM | Цитировать


Iska

Здравствуйте.

Я написал так, как мне привычнее

Кому-то, может быть, как мне, проще чуть больше кода, зато наверняка

Тут больше - чтое сть возможность, так сказать, два в одном, и скрипт на VBS, и если требуется - будет запрос о повышении прав, если не требуется - сообщения не будет, все в одном файле, а не какие-то ярлыки, через чужого запуск и прочее, здесь - все в одном месте

Последний раз редактировалось SharkyEXE, 23-03-2020 в 23:00.


Отправлено: 22:52, 23-03-2020 | #25


Ветеран


Contributor


Сообщения: 27628
Благодарности: 8079

Профиль | Отправить PM | Цитировать


SharkyEXE, я написал лишь о том, что у меня, в моих конкретных условиях, отрабатывает и без повышения привилегий до административных.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:26, 24-03-2020 | #26


Ветеран


Сообщения: 888
Благодарности: 86

Профиль | Отправить PM | Цитировать


Iska

Понятно.

PS. Вы бы не могли, пожалуйста, эту строку
Код: Выделить весь код
WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Fax'").Delete_
перевести на язык Autoit?

Отправлено: 06:18, 24-03-2020 | #27


Ветеран


Contributor


Сообщения: 27628
Благодарности: 8079

Профиль | Отправить PM | Цитировать


Например, так:
Скрытый текст
Код: Выделить весь код
AutoItSetOption("MustDeclareVars", 1)

Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator")

$oSWbemLocator.ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Epson Stylus C20 Series (M)'").Delete_

Exit(0)
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:22, 24-03-2020 | #28


Ветеран


Сообщения: 888
Благодарности: 86

Профиль | Отправить PM | Цитировать


Iska

А никак нельзя в одну строку соединить эту команды, пожалуйста?
Код: Выделить весь код
Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator")

$oSWbemLocator.ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Epson Stylus C20 Series (M)'").Delete_

Отправлено: 21:34, 24-03-2020 | #29


Ветеран


Contributor


Сообщения: 27628
Благодарности: 8079

Профиль | Отправить PM | Цитировать


Цитата SharkyEXE:
А никак нельзя в одну строку соединить эту команды »
Код: Выделить весь код
(ObjCreate("WbemScripting.SWbemLocator")).ConnectServer(".", "root\cimv2").Get("Win32_Printer.DeviceID='Epson Stylus C20 Series (M)'").Delete_
Но! Чтобы скомпилировать скрипт, потребуется отключить умолчальную проверку синтаксиса утилитой Au3Check. В коде:
Код: Выделить весь код
#AutoIt3Wrapper_Run_Au3Check=N
или вручную.

Отправлено: 22:05, 24-03-2020 | #30



Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 2000/XP » Разное - [решено] Удаление принтеров из командной строки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Завершение программы из командной строки Severny Скриптовые языки администрирования Windows 13 21-04-2013 20:50
CMD/BAT - [решено] архиватор 7z и командной строки Daemon.XP Скриптовые языки администрирования Windows 4 15-07-2009 11:40
Службы - [решено] network down из командной строки Daemon.XP Microsoft Windows 2000/XP 3 02-03-2009 21:59
[решено] Утилиты командной строки kapitanvagin Программное обеспечение Windows 1 28-03-2008 22:56
Разное - [решено] Закрыть приложение из командной строки Alexx280 Microsoft Windows 2000/XP 3 01-08-2007 08:16




 
Переход