Ho un programma che funziona bene su VS2008 e Vista, ma sto provando su Windows 7 e VS2010/.NET Framework 4.0 e non funziona. In definitiva il problema è che System.Diagnostics.PerformanceCounterCategory.GetCategories() (e altri metodi di PerformanceCounterCategory) non funziona. Ricevo System.InvalidOperationException con il messaggio "Impossibile caricare i dati del nome contatore perché un indice non valido" è stato letto dal registro. "PerformanceCounters su .NET 4.0 e Windows 7
posso riprodurre questo con il semplice programma riportato di seguito:
class Program
{
static void Main(string[] args)
{
foreach (var pc in System.Diagnostics.PerformanceCounterCategory.GetCategories())
{
Console.WriteLine(pc.CategoryName);
}
}
}
ho fatto sicuro che sto eseguendo il programma come un amministratore. Non importa se lo eseguo con VS/Debugger allegato o no. Non ho un altro computer con Windows 7 o VS2010 per testarlo, quindi non sono sicuro di quali siano le cose più complicate qui (o entrambe?). È Windows 7 x64 e ho provato a forzare l'esecuzione dell'app sia in x32 che in x64 ma ottenere gli stessi risultati.
Se non si è sicuri della versione Windows rispetto a .net, è possibile provare a modificare le proprietà del progetto in VS per scegliere .net 3.5, ricostruire e riprovare. Oppure è possibile creare lo stesso codice su una macchina vista/xp con 2008 e copiare l'exe sulla macchina Win7. – JMarsch
Ottimo suggerimento. Grazie. –