我有一个在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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我确实确保我以管理员身份运行该程序.如果我使用附加的VS/Debugger运行它并不重要.我没有其他机器用Windows 7或VS2010来测试它,所以我不确定哪个复杂的东西(或两者兼而有之?).它是Windows 7 x64,我试图强制该应用程序在x32和x64中运行,但得到相同的结果.