有没有办法以编程方式检测当前Windows PC /用户上是否存在LogMeIn会话?
我已经尝试过几种方式(在C#中,但语言无关紧要):
IO Write Bytes/s
或IO Data Bytes/s
。这最初只能起作用。如果会话超过一分钟,则这些性能计数器不会记录任何活动,即使LogMeIn仍有网络流量。任何提示?
答案 0 :(得分:1)
通过拦截ETW痕迹来解决它:
var logmeinProcess = System.Diagnostics.Process.GetProcessesByName("LogMeIn").Single();
using (var session = new TraceEventSession("MyRealTimeSession")) // Create a session to listen for events
{
session.EnableKernelProvider(Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.NetworkTCPIP);
session.Source.Kernel.UdpIpSend += (data) =>
{
if (data.ProcessID == logmeinProcess.Id)
{
lock (_logMeInUdpQueue)
{
_logMeInUdpQueue.Enqueue(DateTime.UtcNow);
}
}
};
session.Source.Process();
}
这样我就可以通过LogMeIn进程获得UDP发送的数量,这非常适合检测LogMeIn会话。