PerformanceCounterCategory.Exists, выбрасывающий 'Входная строка была в неправильном формате.' - PullRequest
2 голосов
/ 20 июля 2009

Когда я проверяю наличие категории производительности, используя

PerformanceCounterCategory.Exists("myCategory")

в системе (чистая установка XP SP3), где категория не существует, я получаю следующее исключение...

    Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
       at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
       at System.Int32.Parse(String s, IFormatProvider provider)
       at System.Diagnostics.PerformanceCounterLib.GetStringTable(Boolean isHelp)
       at System.Diagnostics.PerformanceCounterLib.get_NameTable()
       at System.Diagnostics.PerformanceCounterLib.get_CategoryTable()
       at System.Diagnostics.PerformanceCounterLib.CategoryExists(String machine, String category)
       at System.Diagnostics.PerformanceCounterCategory.Exists(String categoryName, String machineName)
       at System.Diagnostics.PerformanceCounterCategory.Exists(String categoryName)

Не хочу винить фреймворк :) что я делаю не так?

РЕДАКТИРОВАТЬ: После проверки списка объектов производительности - он полонцифры, а не обычный текст - похоже, список поврежден - попробую этот КБ

1 Ответ

1 голос
/ 20 июля 2009

Хорошо. Оказалось, очень поврежденный реестр. Чтобы исправить, я получил (из КБ в вопросе) perfc009.dat и perfh009.bat с диска xp (см. этот KB для расширения диска) и вытолкнул их в% systemroot% / system32.

...