以与语言无关的方式检索性能计数器值

Windows下,性能计数器具有不同的名称,具体取决于操作系统语言。 例如,在英文Windows版本中,有性能计数器\Processor(_Total)\% Processor Time 。 在德语Windows版本上,该计数器被称为\Prozessor(_Total)\Prozessorzeit (%)

有没有办法以独立于语言的方式(使用C ++或C#)检索性能计数器值? 还是有没有一个替代scheme来获得整个计算机的处理器负载没有性能计数器?

Solutions Collecting From Web of "以与语言无关的方式检索性能计数器值"

每个PerfMon计数器被赋予一个唯一的(每台计算机)整数ID来标识PerfMon计数器(但是在标准计数器的情况下,这个id保证保持不变)。

链接PerfMon计数器id的美国英文名称和他们的本地化名称的信息存储在注册表中的以下项:

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib 

使用注册表获取PerfMon计数器名称(可以将其作为标准计数器的常量嵌入到应用程序中)后,可以使用PdhLookupPerfNameByIndex函数查找给定计数器ID的本地化名称。

请参阅以本地化语言(Microsoft KB)正确使用PDH API以获取更多详细信息。

你也可能发现通过winreg(StackOverflow)查找perfmon计数器id有点相关。

有WinAPI函数, QueryHighPerformanceCounterQueryHighPerformanceFrequency

你有没有尝试过使用Pdh帮助函数和PdhAddEnglishCounter函数?