【发布时间】: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() 来获得更好的名称。
-
@HansPassant 谢谢,我想我不能相信 ProcessName :/