Member 13991602 Ответов: 1

Как обнаружить usb-устройство в окне 7 с помощью VB.NET -что ?


Я установил win.10 на свой компьютер и сделал приложение в vb.net 2017 использует класс Win32_PnPEntity, который обнаруживает компьютерные детали, USB и мобильные устройства, и его работа очень хороша в win10. но когда я запускаю это приложение на win.7, оно не обнаруживает никаких компьютерных деталей, USB и мобильных устройств.

Что я уже пробовал:

Imports System.Management


Public Class Form1

Private Sub Get_Dtl(ByVal Val As String)
Try
Dim path As ManagementPath = New ManagementPath()
path.Server = "."
path.NamespacePath = "root\CIMV2"
Dim scope As ManagementScope = New ManagementScope(path)
Dim query As ObjectQuery = New ObjectQuery("SELECT * FROM Win32_PnPEntity")
Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(scope, query)
Dim queryCollection As ManagementObjectCollection = searcher.Get()
Dim A As Integer = 0

For Each m In queryCollection
If Val = "USB" AndAlso m("Service") = "WUDFWpdFs" Then
A += 1
DataGridView1.Rows.Add(A, m("Caption"), m("Description"), m("DeviceID"), m("HardwareID"), m("Manufacturer"), m("Name"), m("PNPClass"), m("PNPDeviceID"), m("Service"), m("Status"))

ElseIf Val = "Mobile" AndAlso m("Service") = "WUDFWpdMtp" Then
A += 1
DataGridView1.Rows.Add(A, m("Caption"), m("Description"), m("DeviceID"), m("HardwareID"), m("Manufacturer"), m("Name"), m("PNPClass"), m("PNPDeviceID"), m("Service"), m("Status"))

ElseIf Val = "All" Then
A += 1
DataGridView1.Rows.Add(A, m("Caption"), m("Description"), m("DeviceID"), m("HardwareID"), m("Manufacturer"), m("Name"), m("PNPClass"), m("PNPDeviceID"), m("Service"), m("Status"))
End If
Next
If A = 0 Then
MsgBox("No Record Found")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try

End Sub

Private Sub Btn_All_Click(sender As Object, e As EventArgs) Handles Btn_All.Click
DataGridView1.Rows.Clear()
Get_Dtl("All")
End Sub

Private Sub BTN_Mobile_Click(sender As Object, e As EventArgs) Handles BTN_Mobile.Click
DataGridView1.Rows.Clear()
Get_Dtl("Mobile")
End Sub

Private Sub Btn_USB_Click(sender As Object, e As EventArgs) Handles Btn_USB.Click
DataGridView1.Rows.Clear()
Get_Dtl("USB")
End Sub

End Class

Leo Chapiro

Трудно сказать, не увидев твой код, чувак. Пожалуйста, поделитесь с нами соответствующим кодом (не всем, что вы написали), добавив его в раздел "Что я пробовал".

1 Ответов

Рейтинг:
2

lw@zi

Возможно, вы захотите взглянуть на Метод DriveInfo.GetDrives (System.IO) | Microsoft Docs[^].

Хорошие люди в MS были достаточно любезны, чтобы завернуть его для нас. Вот как вы можете использовать этот метод:

var drives = DriveInfo.GetDrives();
		foreach (var drive in drives)
		{
			if (drive.IsReady && drive.DriveType == DriveType.Removable)
			{
				Console.WriteLine(drive.Name);
				Console.WriteLine(drive.DriveFormat);
			}
		}


Я не мог запустить это, так как .Net Fiddle (веб-сайт, который я использую для проверки фрагментов) отрицает эти разрешения. Однако он должен работать, если у вас есть необходимый набор разрешений.