2015-05-02 151 views
5

我在过去几个月中一直使用ManagementEventWatcher来监视新流程的启动,并且它没有任何问题。但是,我最近再次尝试了我的应用程序,似乎不再调用新进程的事件。Win32_ProcessStartTrace的ManagementEventWatcher不再适用于Win 8.1

下面是示例代码:

var startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")); 

且事件:

private static void ProcessStart_EventArrived(object sender, EventArrivedEventArgs e) 
{ 
      Console.WriteLine("AppStarted"); 
} 

我还测试了这款另一位朋友的机器上(也赢得8.1)谁有一个旧的二进制(这只是工作在过去的几个月也是如此),他也不再接受事件。

该问题似乎只存在于Win32_ProcessStartTrace中,因为Win32_ProcessStopTrace工作得很好,并在进程停止时接收事件。

最近是否有任何Windows更新可能会干扰?自上次工作以来,我的系统环境没有改变(除了赢得更新)。

+0

我是repro,它现在已经坏了。如果您不想致电Microsoft支持,那么请等待不可避免的更新。 –

+0

有谁知道微软是否会解决这个问题? – TTat

+0

看起来它已被修复! – TTat

回答

1

我有这个问题。要修复它,您需要卸载Windows Update“kb3045999”。

要做到这一点:

  1. 打开Windows更新
  2. 点击“查看更新历史记录”
  3. 点击“已安装的更新”在顶部
  4. 向下滚动,直到看到“Windows安全更新(KB3045999)
  5. 右键单击并卸载
  6. 重新启动计算机

然后应该修复问题。

1

这是由Windows Update kb3045999引起的。

后,您在Windows 8.1或Windows安装此安全更新 服务器2012 R2,调用Windows管理 规范(WMI)应用程序的API直接,或依赖于 WMI(如ManagementEventWatcher类调用的API )没有收到 正确的过程状态(无论过程是否为 正在运行或未运行)。

解决方案: 要解决此问题,请安装修补程序3094199

更新07/11/2015: Microsoft已发布一个修补程序。


您可以使用命令行来卸载此更新。

wusa /uninstall /kb:3045999 

有关更多参数,请参阅WUSA - Windows Update Standalone Installer

更新23/08/2015:对我而言,解决方案不再有效。