Win32_PerfFormattedData_PerfOS_Memory的C#WMI查询返回'无效的类'

时间:2013-02-25 13:34:06

标签: c# wmi

我正在运行Windows 7 64位。

这个问题最近才发生,因为几个月前我一直在WMI中的同一部分工作而没有问题。

这是一个机器特定的问题,因为我在其他几台PC上尝试过这个测试程序而且它可以工作。

我运行了wbemtest,与身份验证类型数据包连接并成功枚举了Win32_PerfFormattedData_PerfOS_Memory对象,我可以查看MOF的内部结构,这是我在我的软件中尝试做的事情。

我还删除并重建了WMI存储库,并尝试重新同步PERF数据。

我的C#应用​​程序还连接了Packet的身份验证类型。

以下是我的简单测试应用程序(pastebin)的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Management;

namespace WMITest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(Dump());
        }

        string Dump()
        {
            string HOST = "WILLIAM-PC";
            string Data = "";

            try
            {
                ConnectionOptions CO = new ConnectionOptions();
                CO.Authentication = AuthenticationLevel.Packet;                

                ManagementScope Scope = new ManagementScope(@"\\" + HOST + @"\root\cimv2", CO);

                Scope.Connect();

                if (! Scope.IsConnected)
                {
                    MessageBox.Show("Not connected!");
                }

                Scope.Options.EnablePrivileges = true;

                SelectQuery Query = new SelectQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_Memory");

                ManagementObjectSearcher MOS = new ManagementObjectSearcher(Scope, Query);

                foreach (ManagementObject MO in MOS.Get())
                {
                    foreach (PropertyData PD in MO.Properties)
                    {
                        Data = Data + PD.Name + " = " + PD.Value + "\n";
                    }
                }

                return Data;
            }
            catch (Exception E)
            {
                return "Exception: " +E.Message ;   
            }
        }
    }
}

任何建议都会感激不尽。 谢谢。

0 个答案:

没有答案