在Windows 7中无法看到性能对象

时间:2012-04-17 02:53:26

标签: delphi windows-7 performancecounter performance

我希望将我的应用程序的某些状态注册为性能对象,以便我可以使用Windows性能监视器来监视其性能。

但我遇到了Windows 7的问题:即使我的应用程序正在运行,也无法在性能监视器列表中看到性能对象。

我的代码与本教程中的Delphi项目完全相同: http://www.wehlou.com/Code/perfmon/index.htm

但是,本教程中提供的解决方案在Windows 7中也不起作用。

此解决方案在 Windows XP和 2003中正常工作。

我不知道Windows 7中是否有一些更改会导致我的性能对象丢失。

请帮忙。提前感谢一堆。

2 个答案:

答案 0 :(得分:3)

您的Windows 7计算机是64位计算机吗?您可能必须提供32位和64位版本:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa371636(v=vs.85).aspx

答案 1 :(得分:0)

答案简短:

是的,您可以在Windows 7 x32下手动修复2个对象性能计数器(DeltaCount& RawCount)问题。 PerfMonClient.exe生成的2个文件是可用的(即symfile.h和symfile.ini)。

Nota:有关lodctr.exe的使用情况,请参阅MSDN。

在此之前,应创建如下的注册表条目:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\PerfMonClient\Performance]
"Open"="PerfData_Open"
"Close"="PerfData_Close"
"Collect"="PerfData_Collect"
"Library"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
  74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,50,\
  00,65,00,72,00,66,00,4d,00,6f,00,6e,00,44,00,4c,00,4c,00,2e,00,64,00,6c,00,\
  6c,00,00,00

Nota:Library指向%SystemRoot%\ System32 \ PerfMonDLL.dll(性能DLL的位置)。

使用PerfMonClient.exe应用程序安装和/或卸载它们的任何尝试即使在Windows XP下也不起作用。把它给忘了。


看一下感觉:

PerMonClient1

PerMonClient2


<强>清单

symfile.h:

#define OBJECT_1   0
#define DEVICE_COUNTER_1   2
#define DEVICE_COUNTER_2   4

symfile.ini:

[info]
drivername=PerfMonClient
symbolfile=symfile.h
[languages]
009=English
[text]
OBJECT_1_009_NAME=PerfMonTest Performance Counters
OBJECT_1_009_HELP=A demo application for your unbridled pleasure
DEVICE_COUNTER_1_009_NAME=RawCount
DEVICE_COUNTER_1_009_HELP=A count of something that goes up and down
DEVICE_COUNTER_2_009_NAME=DeltaCount
DEVICE_COUNTER_2_009_HELP=Something going up all the time, Windows shows difference per time unit