Как получить доступ к информации в диспетчере устройств Windows с Java?

У меня есть последовательный USB-устройство, и более одного из них можно подключить к компьютеру. Мне нужно запросить и получить список COM-портов, к которым подключены устройства. В Windows Device Manager вы можете получить COM-порт + дружественное имя устройств, которые подключены в настоящее время. Этот список является динамическим.

Чтение из реестра не работает, потому что сохраненная информация является устаревшей и статической, а не динамической.

Devcon (из Microsoft) перечисляет порты, к которым подключены устройства, но не может использоваться в моем приложении, потому что он не перенаправляется.

Любые идеи или предпочтительно решение?

Ответ 1

Я смотрю Java Native Access, поскольку он обеспечивает доступ к API-интерфейсам Windows из чистого кода Java - нет JNI для решения. Я был обеспокоен лицензией LGPL; может ли он быть включен в коммерческий продукт, но из того, что говорят несколько сообщений в группе новостей, это может быть. После того, как я попробую в ближайшие несколько недель, я отправлю сюда.

Ответ 2

Мне пришлось решить подобную проблему всего несколько недель назад. Я прошел через Jawin-Project, в котором было все, что нужно для использования WMI-запросов. Он уже довольно старый, но работает как прелесть, если вы следуете документации. Хорошее немецкое пошаговое руководство можно найти блог codegods.

Для меня это не решило все проблемы (у меня были некоторые специфические вещи, чтобы узнать о целевом устройстве), я, наконец, создал собственный JNI (Java Native Interface) Класс и DLL в C, включающие API окон.

Надеюсь, это то, что вы искали.