none
Создать TCP-порт для принтера (CMD или WinApi) RRS feed

  • Вопрос

  • Подскажите, как создать TCP/IP стандартный порт для сетевого принтера? То, что делается в мастере установки принтера. Необходимо решение в консоли (cmd.exe) или пару функций на WinApi (интернет порезан, доступен мне только этот ресурс, в MSDN никак не найду что нибудь похожее). Работоспособность от Win2k и выше.
    22 сентября 2009 г. 10:11

Ответы

Все ответы

  • Можно уточнить задачу? Явно задача не в создании порта. Создание порта - это одно из решений.
    Какой сетевой принтер? Есть Xerox, есть HP - порты разные и стандарты тоже разные.

    22 сентября 2009 г. 12:06
  • Задача - "тихо" установить принтер, пока обхожусь батниками, хотя можно переписать прогу. Драйвера и сам принтер ставлю через PrintUIEntry, там требуется порт (например IP_192.168.1.190), в мастеер установки принтера этот порт называется "Stardart TCP/IP port". Если еще глубже - нужно автоматизировать подключение нескольких принтеров на выбор, выбирая каждому сетевой порт (ну и отслеживать уже созданые порты и занятые, уже подключенные принтера), без участия пользователя, обходясь только силами cmd.exe или winapi (использую delphi)
    22 сентября 2009 г. 12:44
  • мммм...
    prnport.vbs ?????


    http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/prnport.mspx?mfr=true
    или в встроенной справке по коммандной строке

    правда не знай есть ли сия приблуда в 2к

    а просто присобачить принтера к серваку и оттуда расшарить я так понимаю не судьба?
    • Предложено в качестве ответа Vasily GusevModerator 24 сентября 2009 г. 4:51
    22 сентября 2009 г. 13:49
  • А принтер какой? (повторяю вопрос) Просто есть xerox'ы они малость не стандартные.

    Если подойти к задаче с другой стороны, то есть сначала установить принтсервер (допустим на windows server при этом можно даже dfs name заюзать), а потом подключать к этому серверу пользователей. Само подключение/отключение будет простым, есть скрипты. (то есть как бы оно так именно задумывалось).

    22 сентября 2009 г. 17:49
  • В основном НР. Для Ксероксов создается абсолютно такой же порт, диапазон портов задан жестко (отсюда любой стандартный TCP/IP порт используется как сетевым принтером, так и копиром), на сетевых принтерах убрана вся мишура с dns и dhcp (статический адрес - больше ничего не нужно).
    22 сентября 2009 г. 21:28
  • т.е. тип устройства на порту определяется как Generic Network Card
    22 сентября 2009 г. 22:03
  • Пример VBS скрипта (взятого из script_center.chm)
    Проверил на XP - работает (на Vista и W7 не проверял)

    ====
    Set objDictionary = CreateObject("Scripting.Dictionary")

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objNewPort = objWMIService.Get ("Win32_TCPIPPrinterPort").SpawnInstance_

    objNewPort.Name = "IP_169.254.110.14"
    objNewPort.Protocol = 1
    objNewPort.HostAddress = "169.254.110.14"
    objNewPort.PortNumber = "9100"
    objNewPort.SNMPEnabled = False
    objNewPort.Put_
    ====
     

    23 сентября 2009 г. 12:52
  • Этот скрипт в базе скриптов помечен как "от ХР и выше". Будет время - проверю на win2к, висте и Win7
    23 сентября 2009 г. 15:23
  • Как на счет %WINDIR%\system32\prnport.vbs ??

    http://www.windowsfaq.ru/content/view/103/57/
    23 сентября 2009 г. 16:15
  • Я про него и говорю (и выше про него говорили, и вообще интернет полон его копипастами, только мне бы хотелось без vbs обойтись), не могу сейчас найти страницу где отмечены галками "рабочие" ОС для него. Попробую написать консольную утилитку, пойду закопаюсь на msdn...
    23 сентября 2009 г. 18:18
  • Я про него и говорю (и выше про него говорили, и вообще интернет полон его копипастами, только мне бы хотелось без vbs обойтись), не могу сейчас найти страницу где отмечены галками "рабочие" ОС для него. Попробую написать консольную утилитку, пойду закопаюсь на msdn...
    Честно говоря не понимаю чем не нравится вариант с VBS....
    Но есть такой вариант: rundll32 printui.dll,PrintUIEntry

    Для вывода всех возможных вариантов использования - rundll32 printui.dll,PrintUIEntry /?

    Порт можно создать непосредственно добавив информацию о нем в реестр, например, так:

    REGEDIT4
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\printerhostname]
    "Protocol"=dword:00000001
    "Version"=dword:00000001
    "HostName"="printerhostname"
    "IPAddress"="192.168.0.10"
    "HWAddress"=""
    "PortNumber"=dword:0000238c
    "SNMP Community"="public"
    "SNMP Enabled"=dword:00000001
    "SNMP Index"=dword:00000001

    Необходимо заменить "printerhostname" FQDN принтера(порта) например printer1.domain.ru

    Затем можно установить принтер вот такой, примерно, командой:

    rundll32 printui.dll,PrintUIEntry /if /b "<Описание>" /f "%windir%\inf\ntprint.inf" /q /r "Порт>" /m "<Драйвер>" /z /u

    Если ответ Вам помог, нажмите на изображение зеленой галочки - «пометить как ответ». Если ответ был для Вас полезен, Вы можете пометить это сообщение как «полезное», нажав на ссылку "проголосовать за полезное сообщение".
    24 сентября 2009 г. 5:57
  • Используйте GPP для настройки принтеров Group Policy Preference – ставим на красное

    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    • Помечено в качестве ответа Vasily GusevModerator 17 октября 2009 г. 7:04
    24 сентября 2009 г. 9:23
    Модератор
  • Как ставить принчер через PrintUIEntry я в курсе :) Метод через реестр отмел сразу, думая что он костыльный (механизмов создания портов не знаю, может там генерируется какой нить guid и прописывается черт знает где, мало ли...), и пока отложу его. Sazonov ILYA [ sie ], повторите, пожалуйста, ссылку. Текущая ругается 404. На всякий случай скажу, что домен есть, но принтера ставятся и на совершенно сторонние компьютеры, "волей случая" появляющиеся в сети, которые чхать хотели на доменную политику и не хотят править локальную :)
    24 сентября 2009 г. 14:41
  • Ссылку поправил
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    24 сентября 2009 г. 14:45
    Модератор
  • PS Оффтоп. Отдельное стотысячное "фи" дизайнерам сего форума, юзабельность при ответе околонулевая, нельзя обратиться к человеку вставив его имя, а при выделении выделяется всякая мишура (типа медалей, званий) и приходится заниматься вырезаниями. При ответе так же не видно постов, приходится открывать вторую страницу с ответами, в форме ответа нет никаких кодов, проблематично даже отквотить часть текста как цитату. Наделал куколок вуду и втыкаю в них иголки.
    24 сентября 2009 г. 14:47
  • Для предложений есть раздел http://social.technet.microsoft.com/Forums/ru-RU/proposalru/threads

    Опишите там развернуто и по пунктам ваши предложения - не пожалейте времени.


    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    24 сентября 2009 г. 15:06
    Модератор