代码之家  ›  专栏  ›  技术社区  ›  PaulB

PerformanceCounterCategory.exists引发“输入字符串的格式不正确。”

  •  2
  • PaulB  · 技术社区  · 15 年前

    当我使用

    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)
    

    不想责怪框架:)我做错了什么?

    编辑: 在检查了性能对象列表之后-它充满了数字而不是普通文本-看起来列表已经损坏-将尝试 this KB

    1 回复  |  直到 15 年前
        1
  •  1
  •   PaulB    15 年前

    好啊。原来是一个非常腐败的注册表。要修复此问题,我从xp光盘(请参阅)获得了(来自问题中的知识库)perfc09.dat和perfh009.bat this KB 用于膨胀光盘) 并将它们弹出到%SystemRoot%/System32。