WMI funktioniert nach dem Upgrade auf Windows 10 nic
Ich habe den folgenden Code für eine Konsolenanwendung in Visual Studio unter Windows 8 verwendet, um die Beschreibung, die Einschalt- und die Geräte-ID der angeschlossenen seriellen Geräte zurückzugeben. Ich habe eine geänderte Version davon in einer Anwendung verwendet, die ich erstelle, um den COM-Port eines Arduino automatisch zu erkennen. Es gibt nichts mehr zurück, seit ich eine Neuinstallation mit Windows 10 durchgeführt habe. Ich habe einen USB-zu-Seriell-AVR-Programmierer, der jedoch immer noch mit diesem Code angezeigt wird. Ich habe die Registrierung überprüft und das Arduino ist in SERIALCOMM aufgeführt. Das Arduino wird im Geräte-Manager unter "Ports (COM & LPT)" als "USB Serial Port (COM6)" angezeigt. Ich kann das Arduino mit der Arduino-Software programmieren. Ich habe keine Ahnung, warum es nicht mehr funktioniert.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management;
using System.IO.Ports;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
ManagementScope connectionScope = new ManagementScope();
SelectQuery serialQuery = new SelectQuery("SELECT * FROM Win32_SerialPort");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(connectionScope, serialQuery);
try
{
foreach (ManagementObject item in searcher.Get())
{
string desc = item["Description"].ToString();
string deviceId = item["DeviceID"].ToString();
Console.WriteLine(desc);
Console.WriteLine(deviceId);
}
}
catch (ManagementException e)
{
Console.WriteLine(e.Message);
}
Console.ReadKey();
}
}
}
Es kann auch relevant sein, dass ich beim Versuch, eine Lösung zu finden, die folgende Implementierung zum Suchen von Portnamen mithilfe von MSSerial_PortName gefunden habe und den Fehler "Zugriff verweigert" erhalten habe.
using System;
using System.Management;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
try
{
ManagementObjectSearcher MOSearcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSSerial_PortName");
foreach (ManagementObject MOject in MOSearcher.Get())
{
Console.WriteLine(MOject["PortName"]);
}
}
catch (ManagementException me)
{
Console.WriteLine("An error occurred while querying for WMI data: " + me.Message);
}
Console.ReadKey();
}
}
}