Tôi có một chương trình hoạt động tốt trên VS2008 và Vista, nhưng tôi đang thử nó trên Windows 7 và VS2010/.NET Framework 4.0 và nó không hoạt động. Cuối cùng, vấn đề là System.Diagnostics.PerformanceCounterCategory.GetCategories() (và các phương thức PerformanceCounterCategory khác) không hoạt động. Tôi nhận được một System.InvalidOperationException với thông báo "Không thể tải dữ liệu tên truy cập vì một chỉ mục không hợp lệ" đã được đọc từ sổ đăng ký. "PerformanceCounters trên .NET 4.0 & Windows 7
tôi có thể tái sản xuất này với các chương trình rất đơn giản hiển thị dưới đây:
class Program
{
static void Main(string[] args)
{
foreach (var pc in System.Diagnostics.PerformanceCounterCategory.GetCategories())
{
Console.WriteLine(pc.CategoryName);
}
}
}
tôi đã chắc chắn rằng tôi đang chạy chương trình như một quản trị viên. Nó không quan trọng nếu tôi chạy nó với VS/Debugger đính kèm hay không. Tôi không có một máy tính khác với Windows 7 hoặc VS2010 để kiểm tra nó trên, vì vậy tôi không chắc chắn đó là những điều phức tạp ở đây (hoặc cả hai?). Đó là Windows 7 x64 và tôi đã cố gắng buộc các ứng dụng để chạy trong cả hai x32 và x64 nhưng có được kết quả tương tự.
Nếu bạn không chắc chắn về phiên bản Windows so với .net, bạn có thể thử thay đổi thuộc tính dự án trong VS để nhắm mục tiêu .net 3.5, xây dựng lại và thử lại. Hoặc bạn có thể tạo cùng mã trên máy vista/xp với năm 2008 và sao chép exe vào máy Win7. – JMarsch
Mẹo hay. Cảm ơn. –