Ich versuche den folgenden C# -Code zu verwenden, um das angehängte/entfernte Ereignis von USB-Massenspeichergeräten zu erkennen. Ich verwende Win32_VolumeChangeEvent.Funktioniert das WMI-Ereignis Win32_VolumeChangeEvent unter Windows XP?
// Initialize an event watcher and subscribe to events that match this query
var _watcher = new ManagementEventWatcher("select * from Win32_VolumeChangeEvent");
_watcher.EventArrived += OnDeviceChanged;
_watcher.Start();
void OnDeviceChanged(object sender, EventArrivedEventArgs args)
{
Console.WriteLine(args.NewEvent.GetText(TextFormat.Mof));
}
Das Problem ist, dass dies auf Vista funktioniert gut, aber es funktioniert nicht bei allen auf XP (keine Ereignisse empfangen). Die Microsoft-Dokumentation besagt, dass dies funktionieren sollte (http://msdn.microsoft.com/en-us/library/aa394516(VS.85).aspx). Ich habe lange gegoogelt und andere gefunden, die dieses Problem haben. Aber ich fand auch ein paar Artikel, die behaupten, dass diese Art von Abfrage (meistens in VBScript) mit XP funktioniert. Aber ich kann einige offizielle Informationen von Microsoft für dieses Problem nicht finden und ich kann nicht glauben, dass Microsoft dieses Problem für drei Service Packs übersehen hat.
Also meine Frage ist: hat jemand das Win32_VolumeChangeEvent mit Erfolg auf XP verwendet oder kann einen Link/Erklärung, warum es nicht auf XP arbeiten sollte?
Als ich diese Frage gestellt vor sechs Jahren war es in der Dokumentation nicht geschrieben, aber jetzt ist es. Jedenfalls hoffe ich, dass sich noch niemand für Windows XP entwickelt ;-) –