(Я искал Google в течение нескольких дней на этом. Не повезло. Торговый секрет?)
У меня есть ноутбук с самонастраивающимся принтером (серия Canon MF4500w). Ноутбук обменивается данными с принтером. Сам принтер подключается непосредственно к маршрутизатору, и для принтера не используется статический IP-адрес. Маршрутизатор назначает IP-адрес принтеру.
В моем ноутбуке у них нет записи реестра для принтера в
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Стандартный порт TCP/IP\Ports
Однако есть порт для порта Canon MFNP:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Canon MFNP Port\Ports
of CNMFNP_001E8FB0726C
Эта запись в реестре показывает:
IPFixed REG_DWORD 0x000000000 (0)
PrinterPort REG-DWORD 0x0000238c (9100)
Protocol REG_DWORD 0x00000001 (1)
TargetAddress REG_DWORD 0x390b000a (957022218)
TargetMAC REG_SZ 00-1E-8F-B0-72-6C
TargetPort REG_DWORD 0x0000021a2 (8610)
Я предполагаю, что сам драйвер принтера оснащен возможностью поиска сетевого принтера по информации в реестре.
Есть ли функция windows (идеально в С#), которая может выполнять эту же функцию и возвращать текущий IP-адрес принтера, заданного в этой записи реестра?
Любая помощь очень ценится. Благодарю.
Как новичок, я хотел бы опубликовать свои выводы в надежде, что кто-то, кто знает больше меня, может улучшить этот ответ. (Я надеюсь, что это в духе SO).
Короткий ответ на вопрос: только драйвер принтера знает, как добраться до целевого устройства.
Длинный ответ:
Надеюсь, эксперт исправит этот ответ! Благодарю.