我有一个在 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/Debugger 的情况下运行它并不重要。我没有另一台装有 Windows 7 或 VS2010 的机器来测试它,所以我不确定这里的事情(或两者都复杂?)。它是 Windows 7 x64,我尝试强制应用程序在 x32 和 x64 中运行,但得到相同的结果。