Windows 7 64Bit を実行しています。
この問題は、数か月前に 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 ;
}
}
}
}
どんな提案もありがたく受け取られます。ありがとうございました。