アカウント名:
パスワード:
ちゃんとOSのバージョンチェックをしているのはさすが非対応のOSで動かないのは当然
どういうバージョンチェックをしたらWindows 11を検出できるのか逆に知りたい
OSのバージョンをチェックできるAPIが用意されていないOSがあったら逆に知りたい
だからWindowsがそれですよ互換性のためにAPI自体は残されていますが正しい結果を返しません
RtlGetVersion [microsoft.com]でも駄目なの?
駄目。Windows 10はWindowsの最後のバージョン [it.srad.jp]であり、Windows 11は自身をバージョン10と報告する。
---------------------------RtlGetVersion()---------------------------dwMajorVersion=10dwMinorVersion=0dwBuildNumber=22449dwPlatformId=2szCSDVersion=wServicePackMajor=0wServicePackMinor=0wSuiteMask=256wProductType=1
https://twitter.com/Tocchann/status/1433674871729377280 [twitter.com]
素人なので疑問に思うんだけど、バージョンチェックする時って、dwMajorVersionの値だけみて判断するの?もしWindows10の時はその値だけで見ていたとしても、Windows11に対応する時に値が変わらないのなら、他の変数の値も参照して判断するようにしないの?それともその他の変数も全く同じ番号が使われているの?
上の例 (#4133765) で言えば「dwBuildNumber=22449」からかろうじてWindows 11 Insider Preview Build 22449と判別することもできるけど、実際のプログラムの動作には支障がないのに動作対象外バージョンという理由だけでストーリーのようなことになったらユーザーが困るでしょ
ChromeでUser Agent文字列を凍結する計画 [it.srad.jp]と根っこは一緒で、バージョン番号やビルド番号を見て「このOSバージョンならこの関数持ってそう」と判断するのではなく、実行時に実際にその関数が存在しているかを調べて、あれば呼ぶ、なければフォールバックするという実装にしなさいってことです
いわゆるDLL HELLですね
互換インクをチェックするブラザーのことを揶揄して書いているんだと思いますが。。。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ研究家
さすが (スコア:-1, オフトピック)
ちゃんとOSのバージョンチェックをしているのはさすが
非対応のOSで動かないのは当然
Re:さすが (スコア:0)
どういうバージョンチェックをしたらWindows 11を検出できるのか逆に知りたい
Re: (スコア:0)
OSのバージョンをチェックできるAPIが用意されていないOSがあったら逆に知りたい
Re: (スコア:0)
だからWindowsがそれですよ
互換性のためにAPI自体は残されていますが正しい結果を返しません
Re: (スコア:0)
RtlGetVersion [microsoft.com]でも駄目なの?
Re:さすが (スコア:1)
駄目。Windows 10はWindowsの最後のバージョン [it.srad.jp]であり、Windows 11は自身をバージョン10と報告する。
https://twitter.com/Tocchann/status/1433674871729377280 [twitter.com]
Re: (スコア:0)
素人なので疑問に思うんだけど、バージョンチェックする時って、dwMajorVersionの値だけみて判断するの?
もしWindows10の時はその値だけで見ていたとしても、Windows11に対応する時に値が変わらないのなら、他の変数の値も参照して判断するようにしないの?
それともその他の変数も全く同じ番号が使われているの?
Re:さすが (スコア:2, 参考になる)
上の例 (#4133765) で言えば「dwBuildNumber=22449」からかろうじてWindows 11 Insider Preview Build 22449と判別することもできるけど、実際のプログラムの動作には支障がないのに動作対象外バージョンという理由だけでストーリーのようなことになったらユーザーが困るでしょ
ChromeでUser Agent文字列を凍結する計画 [it.srad.jp]と根っこは一緒で、バージョン番号やビルド番号を見て「このOSバージョンならこの関数持ってそう」と判断するのではなく、実行時に実際にその関数が存在しているかを調べて、あれば呼ぶ、なければフォールバックするという実装にしなさいってことです
Re: (スコア:0)
いわゆるDLL HELLですね
Re: (スコア:0)
互換インクをチェックするブラザーのことを揶揄して書いているんだと思いますが。。。