2013-02-18 8 views
8

この質問How can I determine the Windows version from a VB 6 appは、GetVersionExとSelect Caseステートメントを使用してWindows版をユーザーフレンドリな文字列として返すCody Grayの非常に有用な答えを持っています。将来のユーザーフレンドリーなオペレーティングシステムのバージョンを取得するにはどうすればよいですか?

ただし、すべての戻り値はハードコードされているため、将来の証明ではなく、Windows 8などの新しいバージョンのWindowsが出現するたびに書き直す必要があります。

GetVersionExとSelect Caseステートメントを使用する以外に、比較的将来的に証明されるユーザーフレンドリーなオペレーティングシステム名を取得するオプションはありますか?

+0

地球上で何があなたがGetVersionExは、Windowsの将来のバージョンではサポートされなくなると思いますか? –

+2

@HansPassant答えとサンプルコードを見ると、GetVersionExを使用した後、ハードコードされた値を持つ複雑なSelect文を実行する必要があることがわかります。したがって、新しいバージョンのWindowsが出るたびに、コードを修正する必要があります。 –

+5

これは、OSのマーケティング名を表示することです(「Windows UltraModern Spiffy Penultimate Lunar Edition」)。機能的な理由からプラットフォームを検出するよりもむしろ? – Bob77

答えて

7

WMI classesは、次のように必要なデータを抽出するために使用することができます。

Public Function GetFriendlyOSVersion() As String 
    Dim query As String 
    query = "SELECT Caption FROM Win32_OperatingSystem" 
    Dim results As Object 
    Set results = GetObject("Winmgmts:").ExecQuery(query) 
    Dim info As Object 
    For Each info In results 
     GetFriendlyOSVersion = info.Caption 
    Next info 
End Function 
+0

同じ質問が私にも迷惑をかけています。キャプションをテストすることは私が認識している唯一の選択肢ですが、安全ですか? –

+0

はい、私はこれを試して、実動コードで問題なく実装しました。 –

+0

ああ、私はそれが動作していることを知っているだけでは、キャプションは読み取り専用のプロパティですか? –

関連する問題