sakura-editor / sakura

SAKURA Editor (Japanese text editor for MS Windows)
https://sakura-editor.github.io/
Other
1.25k stars 163 forks source link

ユーザーがバグ報告するときに、OS 等の情報を簡単に取得できるようにする #74

Open m-tmatma opened 6 years ago

m-tmatma commented 6 years ago

ユーザーがバグ報告するときに、OS 等の情報を簡単に取得できるようにする

ヘルプ → バージョン情報 → 情報をコピー で サクラエディタ のバージョン情報をクリップボードに取得できるが、 OS の情報も取得できるようにする。

従来 OS の情報を取得するには GetVersionEx が使われてきたが、 Windows 8.1 以降では manifest を正しく設定しないと偽装された値を返す。

manifest に指定する GUID のメンテが面倒なので WMI を使ってみる

m-tmatma commented 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 以前で動くかという懸念があるが。

berryzplus commented 6 years ago

そもそも Visual Studio 2017 で生成したバイナリが Windows Vista 以前で動くかという懸念があるが。

インストール時にxpサポートがどうの、という項目があるのでxpはイケると思ってました。 2018-05-29 4

そういえばまだ試していないです。 すでに試してみた人いないかな~と呟いてみたり(^^;

kobake commented 6 years ago

XPサポート、まだ試したことないです

kobake commented 6 years ago

というか Windows XP の環境持ってなくて確認する手段が無い……(今手元にあるのは Win10, Win2000 のみ)

k-takata commented 6 years ago

従来 OS の情報を取得するには GetVersionEx が使われてきたが、 Windows 8.1 以降では manifest を正しく設定しないと偽装された値を返す。

非公式な方法としては、ntdll.dll の RtlGetVersion を使う技があります。manifest が無くとも正しい値が返ってきます。例: https://gist.github.com/k-takata/f2262db2b342a49a76a70669ce8fdd0d

k-takata commented 6 years ago

確か、XPサポートを入れると Windows SDK 7.1A がインストールされるようになり、ツールチェーンとして ***_xp を選択すると、それが使われるようになります。 実際には、

ということが行われているようです。

m-tmatma commented 6 years ago

wow 64 の情報もあってもいいかも https://takamints.hatenablog.jp/entry/2015/02/11/111714

berryzplus commented 4 years ago

現状、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 の根底にある課題を解決できるように思います。

というわけで、閉じてしまいます。

k-takata commented 4 years ago

よく分かりませんが、

ユーザーがバグ報告するときに、OS 等の情報を簡単に取得できるようにする

という要望は却下ということですか?

beru commented 4 years ago

メモ:https://docs.microsoft.com/en-us/windows/win32/sysinfo/targeting-your-application-at-windows-8-1

berryzplus commented 4 years ago

ユーザーがバグ報告するときに、OS 等の情報を簡単に取得できるようにする

という要望は却下ということですか?

すんません、issueの趣旨を読み違いました。

簡単には取得できないバージョン情報の取得方法を検討してるように見えたので、 そんなもん検討する必要ないわぁっ! と閉じたつもりでした。

berryzplus commented 4 years ago

「OS等の情報」って何やねん!から話したほうがいいんじゃないかな、と思います。

何がわかったらユーザーがバグに遭遇した環境を特定できる? です。

「Windows 10です。」と言われたとして、何を質問しますか? がたぶん答えっす。