【问题标题】:Truncated ProcessName in Win32_ProcessStartTrace queryWin32_ProcessStartTrace 查询中截断的 ProcessName
【发布时间】:2016-08-01 07:54:51
【问题描述】:

我正在使用这段代码来监控进程:

var startWatch = new ManagementEventWatcher(
    "SELECT * FROM Win32_ProcessStartTrace");
startWatch.EventArrived += startWatch_EventArrived;
startWatch.Start();

var stopWatch = new ManagementEventWatcher(
    "SELECT * FROM Win32_ProcessStopTrace");
stopWatch.EventArrived += stopWatch_EventArrived;
stopWatch.Start();

问题是 - ProcessName 属性在两个回调中都被截断为 14 个字符。

var name = e.NewEvent.Properties["ProcessName"].Value.ToString();

两个进程(监控和监控)都是 x64 .NET 控制台应用程序。

有人知道可能是什么原因吗?

【问题讨论】:

  • 我无法复制。您能否提供一个完整的可复制示例(请参阅stackoverflow.com/help/mcve)?
  • 只需谷歌“win32_processstarttrace 进程名称被截断”即可了解有关此已知问题的基本信息。顺便说一句,Linux 错误报告非常有趣。无论如何,第一次点击显示了解决方法,请改用 ProcessID 属性,然后使用 Process.GetProcessById() 来获得更好的名称。
  • 整个项目构建filedropper.com/processmonitor
  • @HansPassant 谢谢,我想我不能相信 ProcessName :/

标签: c# .net process


【解决方案1】:

改用__InstanceCreationEvent/__InstanceDeletionEvent

例子

var startWatch = new ManagementEventWatcher(
    "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'");
startWatch.EventArrived += startWatch_EventArrived;
startWatch.Start();

var stopWatch = new ManagementEventWatcher(
    "SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'");
stopWatch.EventArrived += stopWatch_EventArrived;
stopWatch.Start();

事件示例

// e.NewEvent now have only 3 properties, we should focus on TargetInstance property
var targetInstance = (ManagementBaseObject) e.NewEvent["TargetInstance"];
// TargetInstance has more than 40 properties, some properties can be null
var name = targetInstance["Name"]?.ToString();

使用System.Management NuGet 包在 .NET Core 3.1 上测试。

之前

// Win32_ProcessStartTrace
"League of Legends.exe"
// Win32_ProcessStopTrace
"League of Le" // How can this happen??? Like how???

之后

// __InstanceCreationEvent
"League of Legends.exe"
// __InstanceDeletionEvent
"League of Legends.exe"

【讨论】:

  • 老实说,我忘记了我想要实现的目标,但你的建议似乎很有效:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
相关资源
最近更新 更多