我正在运行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 ;
}
}
}
}
任何建议都会感激不尽。 谢谢。