Je reçois cette erreur:RegistryTreeChangeEvent via C# & WMI
Exception non gérée: System.Runtime.InteropServices.COMException (0x80042001): Exception de HRESULT: 0x80042001 à System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal (Int32 errorCode, IntPtr errorInfo) à System.Management.ManagementEventWatcher.Start() à MyNamespace.Program.Main (String [] args) {dans somedir} \ Program.cs: ligne 16
Et voici ma console C# application que j'utilise pour regarder le registre:
using System;
using System.Management;
namespace MyNamespace
{
class Program
{
static void Main(string[] args)
{
var watcher = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM RegistryTreeChangeEvent"));
var handler = new MyHandler();
watcher.EventArrived += handler.Arrived;
//Start watching for events
watcher.Start();
while (handler.EventHasntFiredYet)
{
// Nothing.
}
//Stop watching
watcher.Stop();
}
public class MyHandler
{
public bool EventHasntFiredYet;
public MyHandler()
{
EventHasntFiredYet = true;
}
public void Arrived(object sender, EventArrivedEventArgs e)
{
var propertyDataCollection = e.NewEvent.Properties;
foreach (var p in propertyDataCollection)
{
Console.WriteLine("{0} -- {1}",p.Name,p.Value);
}
EventHasntFiredYet = false;
}
}
}
}
Je suis en train de regarder simplement le registre des changements. Quelqu'un at-il des suggestions pour expliquer pourquoi cela échoue?
Voilà qui est intéressant. Je me demande pourquoi cette réponse a été rejetée. – bitcycle
Revanche downvote. –
En fait, la documentation indique que vous obtiendrez cette erreur sans la clause where. – Giorgi