2013-02-18 82 views
8

這個問題How can I determine the Windows version from a VB 6 app有一個來自Cody Gray的非常有用的答案,它利用GetVersionEx和Select Case語句將Windows版本作爲用戶友好的字符串返回。如何獲得面向未來的用戶友好操作系統版本?

但是,給出的代碼是有限的,因爲所有的返回值都是硬編碼的,這意味着它不是未來的證明,並且每當新版Windows出來時都需要重寫,例如Windows 8。

除了使用GetVersionEx和Select Case語句之外,是否還有其他選項用於檢索用戶友好的操作系統名稱,該名稱也將相對有前途證明?

+0

地球上是什麼讓你認爲GetVersionEx不會在未來版本的Windows的支持? – 2013-02-18 14:07:53

+2

@HansPassant如果您查看答案和示例代碼,您將看到在使用GetVersionEx之後,您必須使用硬編碼值執行復雜的Select語句。因此,每次出現新版Windows時,都必須修復代碼。 – 2013-02-18 14:50:43

+5

所以這是關於顯示OS的營銷名稱(「Windows超現代Spiffy Penultimate Lunar版」)?出於某種功能原因而不是檢測平臺? – Bob77 2013-02-18 15:52:27

回答

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

同樣的問題也打擾了我,測試Caption是我意識到的唯一選擇,但它是否安全? – 2013-02-18 20:17:18

+0

是的,我現在已經嘗試過並在生產代碼中實現了它,沒有任何問題。 – 2013-02-19 17:58:39

+0

啊,我知道它的工作原理,我只是不確定Caption是隻讀屬性嗎? – 2013-02-19 18:39:47

相關問題