Как вывести список USB locationinfo для всех USB-устройств - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь найти способ найти конкретный слот № USB-концентратора, используя dotnet (vb или c #) Я вижу, что эта информация существует в диспетчере устройств как:

Port_ # 0001.Hub_ # 0004

Короче говоря, я хотел бы перечислить все USB-порты концентратора и название устройства, которое подключено к концентратору. Я проверял параметр WMI, но не могу найти там Device_LocationInfo. Можете ли вы помочь?

1 Ответ

0 голосов
/ 23 января 2019

Класс Win32PnPSignedDriver Содержит информацию не только о USB-устройствах, но и обо всех устройствах, подключенных к вашему ПК.У него есть поле Location, которое содержит то, что вы можете искать.Давайте начнем, как это.Я буду работать в VB.

Создать новую форму Windows и добавить кнопку A (Button1) и DataGridView (DataGridView1).

В Visual Studio перейдите в Project>Добавьте ссылки и добавьте ссылку на System.Management

Откройте Form1.vb и введите следующий код

Imports System.Management
Imports Microsoft.Win32
Public Class Form1
    Dim dt As New DataTable

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT DeviceName, Location, Manufacturer FROM Win32_PnPSignedDriver")
        dt.Columns.Clear()
        For Each queryObj As ManagementObject In searcher.Get()
            For Each item As PropertyData In queryObj.Properties()
                Try
                    dt.Columns.Add(item.Name)
                Catch ex As Exception

                End Try
            Next
            Exit For
        Next
        dt.Rows.Clear()
        For Each queryObj As ManagementObject In searcher.Get()
            Dim dr As DataRow = dt.NewRow
            For Each item As PropertyData In queryObj.Properties
                Try
                    dr(item.Name) = item.Value
                Catch ex As Exception

                End Try
            Next
            dt.Rows.Add(dr)
            dr = dt.NewRow
         Next
         DataGridView1.DataSource = dt
    End Sub
End Class

Когда вы компилируете приведенный выше код и запускаете его, вы получаетеследующий вывод или что-то подобное.enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...