1

タイトルは基本的にそれをすべて言います。Windows Service Pack番号(数値形式)を決定する必要があり、Environment.OSVersion.ServicePack(基本的にはOSVERSIONINFO.szCSDVersionを返すだけ)は文字列を返すだけです。

""私のすべてのテストで、この文字列は(サービスパックなしの)またはの形式"Service Pack X"であり、数値であることが判明しましたX。したがって、これを解析するアルゴリズムは非常に単純である必要があります。

私の質問:この文字列を信頼して常にこの形式にすることはできますか?

(文書化されていないため、私の一部は「いいえ」と言います。他の部分は「はい」と言います。たとえば、MSがWindows 7 SP2に戻ることを決定した場合、既存のコードの多くが壊れてしまうから"SP 2 (x86)"です。したがって、彼らはそれを行いません。 。誰かがそれについてもっと情報を持っていますか?)

4

2 に答える 2

5

いいえ、できません。一部のバージョンでは、翻訳された文字列を使用しています。そのリンクの画像から文字列を見ると、文字列で最初に見つけた数字を使用するだけでうまくいく可能性があることがわかります。

OSVERSIONINFOEXはNT4SP6で追加されました。GetVersionExを呼び出す場合は、Win9xおよび<NT4 SP6で文字列を処理し、他のシステムでOSVERSIONINFOEX.wServicePackMajorを使用するだけで済みます。

于 2011-10-17T16:42:30.210 に答える
-1

BuildLabEx代わりに使用する必要があります。これは、Windowsの初期のビルド以来保持されている特定の形式を持っています。WMIで見つけることができるかどうかはわかりませんが(できるはずです)、レジストリにあります。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\BuildLabEx

例:

7601.17640.amd64fre.win7sp1_gdr.110632-1508

より快適に感じる場合は、最初は簡単にするために特定の正規表現を一致させることに依存し、一致しない場合はCSDVersionフェールバックすることができます。BuildLabEx

于 2011-10-17T16:41:25.647 に答える