2015-05-02 11 views
5

Ho utilizzato ManagementEventWatcher negli ultimi mesi per controllare l'avvio di nuovi processi e ha funzionato senza problemi. Tuttavia, ho appena provato di recente la mia app, e sembra che gli eventi per un nuovo processo non vengano più richiamati.ManagementEventWatcher per Win32_ProcessStartTrace non funziona più in Win 8.1

Ecco il codice di esempio:

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

e l'evento:

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

Ho anche provato questo sulla macchina di un altro amico (Win anche 8.1) che ha avuto un vecchio binario (che ha lavorato solo anche negli ultimi mesi) e non riceve più neanche gli eventi.

Il problema sembra esistere solo con Win32_ProcessStartTrace perché Win32_ProcessStopTrace funziona correttamente e riceve eventi quando un processo si interrompe.

Ultimamente ci sono stati aggiornamenti di Windows che potrebbero interferire con questo? L'ambiente del mio sistema non è cambiato da quando ha funzionato l'ultima volta (a parte gli aggiornamenti di vincita).

+0

I repro, è attualmente rotto. Se non si desidera chiamare il supporto Microsoft, attendere semplicemente l'aggiornamento un po 'inevitabile. –

+0

Qualcuno sa se Microsoft risolverà mai questo? – TTat

+0

Sembra che sia stato corretto! – TTat

risposta

1

Stavo avendo questo problema. Per risolvere il problema, è necessario disinstallare Windows Update "kb3045999".

Per fare questo:

  1. aprire Windows Update
  2. Fare clic su "Visualizza cronologia Update"
  3. Fare clic su "Aggiornamenti installati" nella parte superiore
  4. Scorrere verso il basso fino a vedere "Aggiornamento della protezione per Windows (KB3045999)
  5. Fare clic destro e disinstallare
  6. Riavviare il computer

Il problema dovrebbe essere risolto.

1

Ciò è causato da Windows Update kb3045999.

Dopo aver installato questo aggiornamento della protezione in Windows 8.1 o Windows Server 2012 R2, applicazioni che richiedono gestione Windows Instrumentation (WMI) API direttamente, o che le API di chiamata che si basano su WMI (come la classe ManagementEventWatcher) non ricevono lo stato corretto del processo (indipendentemente dal fatto che il processo sia in esecuzione o non in esecuzione).

Soluzione: Per risolvere questo problema, installare l'hotfix 3094199.

Aggiornamento 07/11/2015: Microsoft ha rilasciato un hotfix.


È possibile utilizzare la riga di comando per disinstallare questo aggiornamento.

wusa /uninstall /kb:3045999 

Vedere WUSA - Windows Update Standalone Installer per più parametri.

Aggiornamento 23/08/2015: Per me, la soluzione non funziona più.

Problemi correlati