我正在寻找一种无需使用 lodctr
可执行文件即可注册到基于 XML 的性能计数器的方法。
同时 this question和 this question对问题给出了一些见解,但没有人给出适当的解决方案。
函数 LoadPerfCounterTextStrings
似乎可以解决问题,但似乎没有将 XML 作为输入(即 lodctr
命令的 /M
参数)。该函数无论如何都会调用 lodctr
命令,但将使程序员免于以编程方式调用 lodctr.exe
。
是否有一种方法可以调用此函数(或任何其他函数),其行为就像:
lodctr.exe /M:xmlfile.xml
?
只是一个附加信息,LoadPerfCounterTextStrings
在 Windows XP 中可用,但是,新的 API (perflib 2) 仅在 Vista 之后可用。我正在使用 V2。
最佳答案
我认为这是不可能的,至少以一种有记录的方式是不可能的。如果您找到并使用一些未记录的方式,它可能会破坏某些操作系统/服务包或 future 版本的 Windows。
最好的办法是调用 LODCTR
和 UNLODCTR
在您的进程中安装/注册性能计数器。由于这些是命令行工具,它们可能会显示一个命令(黑色)控制台窗口。您可以使用管道隐藏输入/输出重定向,这样控制台窗口就不会出现。
请注意,这些工具不会占用太多时间或资源,因此从您的进程中调用这些 EXE 不会占用太多时间(用户不会注意到,甚至无法轻易弄清楚)使用一些过程监控工具)。
请注意,注册/取消注册 PC 是一项罕见的事件 - 因此 Microsoft 不会为您提供一个很好的可调用 Windows API。
关于windows - 在没有 lodctr 的情况下注册性能计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44450991/