windows – 在没有lodctr的情况下注册性能计数器

我正在寻找一种方法来注册基于
XML的性能计数器,而无需使用lodctr可执行文件.

虽然this questionthis question已经对问题有所了解,但没有一个能给出正确的解决方案.

函数LoadPerfCounterTextStrings似乎可以解决这个问题,但似乎没有将XML作为输入(即lodctr命令的/ M参数).该函数无论如何都会调用lodctr命令,但会保存程序员以编程方式调用lodctr.exe.

是否有一种方法可以调用此函数(或任何其他函数),其行为如下:

lodctr.exe /M:xmlfile.xml

只是在Windows XP中可以使用LoadPerfCounterTextStrings的其他信息,但新API(perflib 2)仅在Vista之后可用.我正在使用V2.

最佳答案 我认为这是不可能的,至少是有记录的方式.如果您发现并使用某种未记录的方式,它可能会破坏某些操作系统/服务包或未来版本的Windows.

最好的办法是在您的流程中调用LODCTR和UNLODCTR来安装/注册性能计数器.由于这些是命令行工具,它们可能会显示一个命令(黑色)控制台窗口.您可以使用管道隐藏输入/输出重定向,以便不显示控制台窗口.

请注意,这些工具不占用大量时间或资源,因此从您的流程调用这些EXE不会占用太多时间(用户不会注意到,甚至无法通过某些流程轻松搞清楚监测工具).

请注意,注册/取消注册PC是一项罕见的活动 – 因此Microsoft不会费心为您提供可用的可调用Windows API.

点赞