WMI no funciona después de actualizar a Windows 10

Había estado usando el código a continuación para una aplicación de consola en Visual Studio en Windows 8 para devolver la descripción, la identificación del dispositivo y los dispositivos seriales conectados. Estaba usando una versión modificada de esto en una aplicación que estoy creando para detectar automáticamente el puerto COM de un Arduino. Ya no devuelve nada, ya que hice una instalación nueva con Windows 10. Sin embargo, tengo un programador de USB a AVR en serie que todavía aparece usando este código. Verifiqué el registro y el Arduino aparece en SERIALCOMM, el Arduino se muestra como 'Puerto serie USB (COM6)' en 'Puertos (COM y LPT)' en el Administrador de dispositivos y puedo programar el Arduino usando el software Arduino. No tengo idea de por qué ya no funciona.

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();
        }
    }
}

También podría ser relevante que al intentar encontrar una solución encontré la siguiente implementación para encontrar nombres de puertos usando MSSerial_PortName y obtuve un error de acceso denegado.

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();
        }
    }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta