我有一個在VS2008和Vista上正常工作的程序,但是我在Windows 7和VS2010/.NET Framework 4.0上試用它,它不工作。最終問題是System.Diagnostics.PerformanceCounterCategory.GetCategories()(和其他PerformanceCounterCategory方法)不起作用。我收到System.InvalidOperationException異常消息「無法加載計數器名稱數據,因爲從註冊表中讀取了無效索引」。.NET 4.0和Windows 7 PerformanceCounters
我可以用下圖所示的非常簡單的程序重現此:
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,重建,然後再試一次。 或者您可以在2008年的vista/xp機器上創建相同的代碼,並將exe複製到Win7機器上。 – JMarsch 2009-10-08 22:54:05
偉大的提示。謝謝。 – 2009-10-08 23:38:15