我希望将我的应用程序的某些状态注册为性能对象,以便我可以使用Windows性能监视器来监视其性能。
但我遇到了Windows 7的问题:即使我的应用程序正在运行,也无法在性能监视器列表中看到性能对象。
我的代码与本教程中的Delphi项目完全相同: http://www.wehlou.com/Code/perfmon/index.htm
但是,本教程中提供的解决方案在Windows 7中也不起作用。
此解决方案在 Windows XP和 2003中正常工作。
我不知道Windows 7中是否有一些更改会导致我的性能对象丢失。
请帮忙。提前感谢一堆。
答案 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下也不起作用。把它给忘了。
看一下感觉:
<强>清单强>
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