上边代码获取的与设备管理器不一致
时间: 2023-06-25 19:02:59 浏览: 41
可能是因为你的代码中使用了不同的 API 或者权限不足。你可以尝试使用以下代码来获取设备管理器中的设备列表:
```python
import wmi
c = wmi.WMI()
for device in c.Win32_PnPEntity():
print(device.Caption)
```
这个代码使用了 `wmi` 库来获取设备列表,如果你仍然无法获取正确的列表,你可能需要检查你的权限或者操作系统是否支持这个 API。
相关问题
C#通过API获取串口列表,不要使用SerialPort.GetPortNames(),该方法获取的与设备管理器不一致
可以使用WMI(Windows Management Instrumentation)来获取串口列表,以下是示例代码:
```csharp
using System.Management;
public static List<string> GetSerialPortList()
{
List<string> portList = new List<string>();
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_SerialPort");
foreach (ManagementObject port in searcher.Get())
{
string name = port["Name"] as string;
if (!string.IsNullOrEmpty(name))
{
portList.Add(name);
}
}
return portList;
}
```
该代码使用WMI查询Win32_SerialPort类,该类包含系统中所有串口的信息,可以从中获取串口列表。注意,查询需要管理员权限。
C#获取设备管理器串口列表
你可以使用System.IO.Ports命名空间中的SerialPort类来获取设备管理器中可用的串口列表。下面是一个获取串口列表示例代码:
```csharp
using System.IO.Ports;
string[] ports = SerialPort.GetPortNames();
foreach (string port in ports)
{
Console.WriteLine(port);
}
```
该代码将获取设备管理器中所有可用的串口名称,并将它们打印在控制台窗口中。你可以根据需要将其修改为适合你的应用程序的形式。