Я пытаюсь использовать следующий код c # для обнаружения присоединенного / удаленного события
запоминающие устройства USB. Я использую Win32_VolumeChangeEvent.
// 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));
}
Проблема в том, что это нормально работает в Vista, но совсем не работает в XP (события не получены). Документация Microsoft говорит, что это должно работать (http://msdn.microsoft.com/en-us/library/aa394516(VS.85).aspx). Я гуглил это довольно давно и нашел другие, которые тоже имеют эту проблему. Но я также нашел пару статей, в которых утверждается, что этот вид запроса (в основном в vbscript) ) работает с XP. Но я не могу найти какую-либо официальную информацию от Microsoft для этой проблемы, и я не могу поверить, что Microsoft пропустила эту проблему для трех пакетов обновлений.
Так что мой вопрос: кто-нибудь с успехом использовал Win32_VolumeChangeEvent на XP или может предоставить ссылку / объяснение, почему он не должен работать на XP?