コード パック ( http://code.msdn.microsoft.com/WindowsAPICodePack )などのラッパー ライブラリを使用すると、バージョン チェックが行われます。先に進んでライブラリ メソッドを呼び出すと、実行中に OS にないことをしようとすると、PlatformNotSupportedException がスローされます。
Windows DLL を P/Invoking している場合は、EntryPointNotFoundException をキャッチすることもできます。これは、独自の相互運用を行う場合に最適な方法です。これは、数年後に機能が (更新やサービス パックによって) ダウンレベル OS に追加される可能性があるためです。
これらの両方を使用すると、タスクバーがないこと、ライブラリがないこと、または機能がないことを思い出させる何らかのフラグをキャッシュして、例外のスローとキャッチのパフォーマンス ヒットを節約できます。
独自のバージョン チェックを行い、使用している OS を確認したい場合は、>= の魔法を覚えておいてください。バージョンが正確にXP SP2 であることをテストし、「XP SP2 以降が必要」というメッセージ ボックスを表示するコードがどれだけあるか知っていますか? トン。_ 実際、これが Win7 のメジャー バージョンが 6 である理由です。そのため、「6 に等しい」かどうかをチェックするすべてのコードは引き続き機能します。その男にならないでください。
if (Environment.OSVersion.Version.Major >= 6)
{
if (Environment.OSVersion.Version.Minor >= 1)
// Do Win7 thing
else
// Do Vista thing
}
else if (Environment.OSVersion.Version.Major >= 5)
// Do XP thing
すべてのメジャー/マイナー番号は、 http://msdn.microsoft.com/en-us/library/ms724832%28VS.85%29.aspxで確認できます。
ケイト