C# ManagementException-无效类

C# ManagementException-无效类,c#,.net,wmi,vmware,wmi-query,C#,.net,Wmi,Vmware,Wmi Query,我遇到了一个让我完全困惑的问题。我正在构建的应用程序使用WMI计数器,这些计数器作为VMware View Agent的一部分安装到VDI桌面中。计数器提供有关远程显示协议PCoIP的信息 我有查询计数器的工作代码: ManagementObjectSearcher searcher = new ManagementObjectSearcher(); ObjectQuery generalQuery = new ObjectQuery("SELECT * FROM Win32_PerfRawD

我遇到了一个让我完全困惑的问题。我正在构建的应用程序使用WMI计数器,这些计数器作为VMware View Agent的一部分安装到VDI桌面中。计数器提供有关远程显示协议PCoIP的信息

我有查询计数器的工作代码:

ManagementObjectSearcher searcher = new ManagementObjectSearcher();

ObjectQuery generalQuery = new ObjectQuery("SELECT * FROM Win32_PerfRawData_TeradiciPerf_PCoIPSessionGeneralStatistics");

// Many other queries...

searcher.Query = generalQuery;
foreach (ManagementObject obj in searcher.Get())
{
  // Total session duration
  ulong sessionDurationSec = Convert.ToUInt64(obj["SessionDurationSeconds"]);
  // Get other items...
}
此代码来自一个现有的正在运行的.NET3.5应用程序。我现在已经创建了一个新的.NET 4.0应用程序,并且使用了完全相同的代码——每次都会出现“无效类”管理异常而失败

我已经验证了应用程序权限是否正确,我还尝试在新的.NET 4.0应用程序中查询诸如“Win32_进程”之类的其他项目,它可以正常工作

令人费解的是,计数器在perfmon和wmic中显示并工作良好:

但在WMI CIM Studio或WMI代码创建者内-无:

在我所能想到的所有方面,应用程序都是相同的——app.manifest中的相同权限,以相同的方式调用完全相同的代码(通过计时器)。唯一的区别是.NET3.5和4.0,但是很明显计数器是存在的,因为不止一个应用程序可以看到它们,而相同数量的应用程序无法看到它们


有人知道.NET3.5和4.0之间可能存在的差异会导致这种情况吗?或者,为什么计数器可能对某些应用程序可见,而对其他应用程序不可见?是否有.NET 4.0所需的环境设置我缺少?目前,我不知道如何进一步解决此问题。

如评论中所述,此问题的答案是:

将EXE项目的平台目标设置从x86更改为AnyCPU

经OP确认:

我猜这意味着计数器只有64位?它还将解释为什么某些应用程序可以或不能看到它们——基于它们的目标平台


我还对机器运行了WMIDiag,它还报告了PCoIP性能计数器。它们在机器上,但某些应用程序似乎找不到它们。我的水晶球说“将EXE项目的平台目标设置从x86更改为AnyCPU”。正是这样。不 真实 的。我猜这意味着计数器只有64位?它还将解释为什么某些应用程序可以或不能看到它们——基于它们的目标平台。谢谢你,先生!