我有一个在VS2008
和Vista
上运行良好的程序,但我正在尝试在Windows 7
和VS2010
/.NET Framework 4.0
上运行它,但它无法正常工作。最终问题是System.Diagnostics.PerformanceCounterCategory.GetCategories()(以及其他PerformanceCounterCategory
方法)无法工作。我得到以下错误:
System.InvalidOperationException,消息为“无法加载计数器名称数据,因为从注册表中读取了无效索引''”。
我可以使用下面显示的非常简单的程序重现这个问题:
class Program
{
static void Main(string[] args)
{
foreach (var pc in System.Diagnostics.PerformanceCounterCategory.GetCategories())
{
Console.WriteLine(pc.CategoryName);
}
}
}
我确保以 管理员 身份运行该程序。无论是否使用 VS/调试器运行它都没有关系。我没有另一台配有 Windows 7
或 VS2010
的机器来测试它,因此我不确定是哪个在这里使事情复杂了(或者两个都是?)。它是 Windows 7 x64
,我尝试强制应用程序在 x32
和 x64
中运行,但结果相同。