2013-02-18 18 views
8

To pytanie, How can I determine the Windows version from a VB 6 app, ma bardzo przydatną odpowiedź od Cody Gray, która wykorzystuje GetVersionEx i instrukcję Select Case, aby zwrócić wersję systemu Windows jako przyjazne dla użytkownika ciąg.Jak mogę uzyskać przyszłą wersję przyjaznego dla użytkownika systemu operacyjnego?

Podany kod jest jednak ograniczony, ponieważ wszystkie zwracane wartości są zakodowane na sztywno, co oznacza, że ​​nie jest to zabezpieczenie przyszłościowe i musi zostać przepisane za każdym razem, gdy pojawi się nowa wersja systemu Windows, na przykład Windows 8.

Czy istnieje inna opcja, oprócz użycia GetVersionEx i instrukcji Select Case, w celu pobrania przyjaznej dla użytkownika nazwy systemu operacyjnego, która również będzie stosunkowo odporna na przyszłość?

+0

Co na Ziemi sprawia, że ​​myślisz, że GetVersionEx nie będą wspierane w przyszłych wersjach systemu Windows? –

+2

@HansPassant Jeśli spojrzysz na odpowiedź i kod przykładowy, zobaczysz, że po użyciu GetVersionEx musisz wykonać skomplikowaną instrukcję Select z wartościami zakodowanymi na stałe. Dlatego za każdym razem, gdy wychodzi nowa wersja systemu Windows, musisz naprawić kod. –

+5

A więc chodzi o wyświetlenie nazwy marketingowej systemu operacyjnego ("Windows UltraModern Spiffy Penultimate Lunar Edition")? Zamiast wykrywać platformę z jakiegoś powodu funkcjonalnego? – Bob77

Odpowiedz

7

WMI classes mogą być wykorzystane, aby wyodrębnić wymagane dane w następujący sposób:

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

To samo pytanie też mi przeszkadza, a testowanie Podpisu jest jedyną alternatywą, o której wiem, ale czy jest to bezpieczne? –

+0

Tak, teraz wypróbowałem i zaimplementowałem go w kodzie produkcyjnym bez żadnych problemów. –

+0

Ah, wiem, że to działa, po prostu nie jestem pewien czy napis jest własnością tylko do odczytu? –

Powiązane problemy