【发布时间】:2010-12-05 04:12:51
【问题描述】:
我有一个在 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 中运行,但得到相同的结果。
【问题讨论】:
-
如果您不确定 Windows vs .net 版本,您可以尝试将 VS 中的项目属性更改为目标 .net 3.5,重新构建,然后重试。或者你可以在vista/xp机器上用2008构建相同的代码,然后将exe复制到Win7机器上。
标签: c# windows-7 .net-4.0 performancecounter