“No se encuentra” excepción generada al intentar obtener la ID de la CPU a través de WMI

StackOverflow https://stackoverflow.com/questions/4533756

Pregunta

Estoy usando este código para buscar el ID del procesador:

    public static string getProcessorId()
    {
        var mc = new ManagementClass("Win32_Processor");
        var moc = mc.GetInstances();

        foreach (var mo in moc)
        {
            return mo.Properties["ProcessorId"].Value.ToString();
        }

        return "Unknown";
    }

Estoy utilizando Windows 7 de 32 bits, Visual Studio 2008. Por desgracia, una excepción "No se encuentra" está siendo criado por el mc.GetInstances llamada al método ().

Aquí hay un poco similar de código (fetch HDD de serie):

    public static string getVolumeSerialNumber()
    {
        var disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
        disk.Get();
        return disk["VolumeSerialNumber"].ToString();
    }

Este código también falla -. El "disk.Get ()" método lanza una excepción "clase no válida"

Me he encontrado este código con UAC desactivado y en - nada ayuda

.

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

instalación

WMI parece algo roto, he probado su código getProcessorId en un Windows 7 con el UAC, y funciona bien. "Win32_Processor" es una clase estándar que realmente debería estar allí.

Aquí hay un enlace a cuestiones WMI ayudar a diagnosticar: ¿Cómo comprobar el repositorio WMI antes de su reconstrucción

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top