У меня есть программа, которая отлично работает на 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, но получить те же результаты.