次のC#コードを使用して、 USB大容量記憶装置の接続/削除イベントを検出しようとしています。私はWin32_VolumeChangeEventを使用しています。W32イベントWin32_VolumeChangeEventは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));
}
問題は(何のイベントが受信されない)、これはVista上で正常に動作しますが、それはすべてのXPで動作しないということです。マイクロソフトのドキュメントによれば、これはうまくいくはずです(http://msdn.microsoft.com/en-us/library/aa394516(VS.85).aspx)。私はこれをかなりの間グーグルで見つけ出し、この問題もある他のものを見つけました。しかし、私はまた、この種のクエリ(主にvbscript)がXPで動作すると主張するいくつかの記事を発見しました。しかし、私はこの問題のためにマイクロソフトから公式な情報を見つけることはできません.3つのサービスパックでMicrosoftがこの問題を見落としているとは思えません。
私の質問は次のとおりです:XPで成功したWin32_VolumeChangeEventを誰かが使用したか、またはXP上で動作しない理由を説明するリンクを提供できますか?
私はこの質問を6年前に書いていましたが、文書には書かれていませんでしたが、今はそれです。とにかく、誰もまだWindows XPのために開発していないことを願っています;-) –