2008-10-1[水] osバージョン取得で嘘を返される

以前、フリーのアプリがVistaでいつのまにか ヘンな挙動をするようになったことがあったのですが、 ソースがあるので Visual Studio で追っかけてみたところ api でのosバージョン取得で 6(vista)でなく5が返されて Vista非対応処理に流れていたためでした。
アプリは正常、osがヘン…原因気づくまではvista腐ったかと思いましたよ。

もちろん、vistaでなく自分のポカで、 xp互換モードになっていたのが原因。

ただ、xp互換モードになってたのは、そのアプリでなく、 常用しているファイラ(WinFD)のほうでした。
(vista環境で不安定なWinFDを多少なりにも安定させようと 試行錯誤でたまたまxp互換にしてた模様)

アプリ も Visual Studio もファイラ上のファイル名を ダブルクリックして関連付けで起動していたため、 ファイラを操作している気分が少ないせいもあってか、 ファイラの影響をうけてるなんて思いもしなかったです...

というか、互換モードって子プロセス(?)にも継承されるのですね。
古いファイラやランチャを互換モードで使うのは、あまりよろしくない、 ということのようです。
(互換モードで動くアプリから呼ばれる .dll 内部で osのバージョンで処理切り替えていたりする場合も同様だろうで... 互換モードによらずos判定とかする方法ってあるのかな?)

※結局、ファイラはWinFM2008に移行しました。