Как получить информацию об устройстве в операционной системе с помощью python?

Как можно получить значение свойства "Описание устройства" (см. рисунок) с помощью Python на системе Windows 10 или Windows 7? Я уже знаю, как определить доступные COM-порты в Python, но мне нужно получить название устройства, чтобы пользователь мог выбрать корректный COM-порт. Где это название хранится, и можно ли его получить при высоких настройках безопасности?
Изображение к вопросу
  • 17 января 2024 г. 18:08
Ответы на вопрос 2
Для получения информации об устройствах, включая COM-порты на системе Windows, вы можете использовать библиотеку `pywin32`, которая предоставляет интерфейс для работы с API Windows.

Установите пакет `pywin32`, если он у вас ещё не установлен:

```bash
pip install pywin32
```

После установки вы можете использовать следующий скрипт для получения списка COM-портов и их описаний:

```python
import win32com.client

def get_com_ports():
    # Получаем WMI интерфейс
    wmi = win32com.client.GetObject("winmgmts:")
    # Запрашиваем информацию о COM портах через WMI запрос
    for obj in wmi.InstancesOf("Win32_SerialPort"):
        # Получаем имя и описание каждого COM порта
        name = obj.Properties_("Name").Value
        description = obj.Properties_("Description").Value
        print(f"{name} – {description}")

get_com_ports()
```

Этот скрипт получит список COM-портов и будет показывать их имена вместе с описаниями, которые вы видите в диспетчере устройств.

Что касается безопасности, получение такой информации должно быть возможно без особых привилегий, однако на некоторых системах могут быть настройки политик или антивирусного программного обеспечения, которые ограничивают доступ к WMI. Если скрипт не работает из-за настроек безопасности, вам потребуются соответствующие разрешения на выполнение WMI-запросов.
У вас виндузятников там есть вроде консольная команда driverquery 
Можно её выполнять из питона и парсить результат. Там есть в выхлопе нужное устройство?
Можно попробовать подключаться перебирая все порты, если есть возможность определить при успешном подключении нужное это устройство или нет.
Искать нужно как найти нужные данные через консоль, а потом искать как выполнить консольную команду из питона и получить консольный выхлоп, а потом искать нужную строчку в выхлопе.
Примерно такой путь.
Похожие вопросы