W innym poście (https://stackoverflow.com/a/30758129/6513653) relationed do tego, Scott Chamberlain powiedział: „Nie wierzę, jest coś w .NET, które może to zrobić, będziesz musiał wykonać połączenie natywne ". Po wypróbowaniu wszystkich możliwych zasobów .NET, myślę, że ma rację. Tak więc zacząłem badać, w jaki sposób dialog ADD DRUKARKA przeprowadza wyszukiwanie. Korzystając z Wiresharka, dowiedziałem się, że ADD PRINTER wysyła co najmniej dwa typy pakietów do wszystkich hostów w sieci lokalnej: dwa żądania http/xml do 3911 portów i trzy żądania SNMP. Pierwszym żądaniem SNMP jest następny 1.3.6.1.2.1.43, który jest Printer-MIB. Drugi to get 1.3.6.1.4.1.2699.1.2.1.2.1.1.3, który jest pmPrinterIEEE1284DeviceId z PRINTER-PORT-MONITOR-MIB. Jest to najbardziej interesujące, ponieważ pochodzi z nazwy drukarki ADD PRINTER. Trzeci to get 1.3.6.1.2.1.1.1.0, który jest sysDescr z SNMP MIB-2 System. Wierzę, że drugie żądanie SNMP wystarczy, aby znaleźć większość drukarek sieciowych w sieci lokalnej, więc zrobiłem ten kod. Działa dla aplikacji Windows Form i zależy od SnmpSharpNet.
Edytuj: Używam Pinga ARP zamiast zwykłego Ping do wyszukiwania aktywnych hostów w sieci.Link do przykładowego projektu:? ListNetworks C# Project
AvailablePrinterInfo w którym jest coraz nazw jako błąd typu lub obszaru nazwy „AvailablePrinterInfo” nie można odnaleźć (czy brakuje using dyrektywa lub odwołania do zestawu –