Open m-tmatma opened 6 years ago
https://msdn.microsoft.com/en-us/library/aa392107(v=vs.85).aspx を見ると Minimum supported client が Windows Vista とあるので、 WMI を使う場合、Windows Vista 以降が対象になる。
まず、IsWindowsVistaOrGreater を使って Windows Vista 以降か チェックして、Windows Vista 以前なら、GetVersionEx を使うようにすれば Windows Vista 以前にも対応は可能。
そもそも Visual Studio 2017 で生成したバイナリが Windows Vista 以前で動くかという懸念があるが。
そもそも Visual Studio 2017 で生成したバイナリが Windows Vista 以前で動くかという懸念があるが。
インストール時にxpサポートがどうの、という項目があるのでxpはイケると思ってました。
そういえばまだ試していないです。 すでに試してみた人いないかな~と呟いてみたり(^^;
XPサポート、まだ試したことないです
というか Windows XP の環境持ってなくて確認する手段が無い……(今手元にあるのは Win10, Win2000 のみ)
従来 OS の情報を取得するには GetVersionEx が使われてきたが、 Windows 8.1 以降では manifest を正しく設定しないと偽装された値を返す。
非公式な方法としては、ntdll.dll の RtlGetVersion
を使う技があります。manifest が無くとも正しい値が返ってきます。例: https://gist.github.com/k-takata/f2262db2b342a49a76a70669ce8fdd0d
確か、XPサポートを入れると Windows SDK 7.1A がインストールされるようになり、ツールチェーンとして ***_xp
を選択すると、それが使われるようになります。
実際には、
LIB
, INCLUDE
に Windows SDK 7.1A のディレクトリが追加される。_USING_V110_SDK71_
が define される。/subsystem:console,5.01
が指定される。(x64 の場合は 5.02)ということが行われているようです。
wow 64 の情報もあってもいいかも https://takamints.hatenablog.jp/entry/2015/02/11/111714
現状、MSVCのビルドシステムの都合で、windows 10 SDKが必須となっています。
ただまぁ、プリプロセッサで _WIN32_WINNT=_WIN32_WINNT_WIN7
と定義しているので、win8以降が必要なwindowsの機能は使えないです。
https://github.com/sakura-editor/sakura/blob/17bcab72eac7647cd8b7424db92aa4f87b9aff97/sakura/sakura.vcxproj#L89-L94
そもそも Visual Studio 2017 で生成したバイナリが Windows Vista 以前で動くかという懸念があるが。
インストール時にxpサポートがどうの、という項目があるのでxpはイケると思ってました。
とコメントしとりますが、xpは無理っす。
利用可能なOSバージョンは win7 <= ver
です。
で、win7初期バージョンで実装されていなかった windows の機能は原則として使えないです。
従来 OS の情報を取得するには GetVersionEx が使われてきたが、 Windows 8.1 以降では manifest を正しく設定しないと偽装された値を返す。
正しく設定したったらいいだけじゃんね?
という結論にしたら、
ぼくたちは正しくない manifest しか用意できないザコなので、OS情報を簡単に取得できるようにするための代替手法を考えなくてはいけない!
というこの issue の根底にある課題を解決できるように思います。
というわけで、閉じてしまいます。
よく分かりませんが、
ユーザーがバグ報告するときに、OS 等の情報を簡単に取得できるようにする
という要望は却下ということですか?
ユーザーがバグ報告するときに、OS 等の情報を簡単に取得できるようにする
という要望は却下ということですか?
すんません、issueの趣旨を読み違いました。
簡単には取得できないバージョン情報の取得方法を検討してるように見えたので、
そんなもん検討する必要ないわぁっ!
と閉じたつもりでした。
「OS等の情報」って何やねん!から話したほうがいいんじゃないかな、と思います。
何がわかったらユーザーがバグに遭遇した環境を特定できる?
です。
「Windows 10です。」と言われたとして、何を質問しますか?
がたぶん答えっす。
ユーザーがバグ報告するときに、OS 等の情報を簡単に取得できるようにする
ヘルプ → バージョン情報 → 情報をコピー で サクラエディタ のバージョン情報をクリップボードに取得できるが、 OS の情報も取得できるようにする。
従来 OS の情報を取得するには GetVersionEx が使われてきたが、 Windows 8.1 以降では manifest を正しく設定しないと偽装された値を返す。
manifest に指定する GUID のメンテが面倒なので WMI を使ってみる