2013-02-18 14 views
8

Questa domanda, How can I determine the Windows version from a VB 6 app, ha una risposta molto utile da Cody Gray che utilizza GetVersionEx e un'istruzione Select Case per restituire la versione di Windows come stringa di facile utilizzo.Come posso ottenere una versione del sistema operativo di facile utilizzo futura?

Tuttavia il codice data è limitata in quanto tutti i valori di ritorno sono codificati che significa che non è a prova di futuro e ha bisogno di essere riscritto ogni volta che una nuova versione di Windows viene fuori, come Windows 8, per esempio.

Esiste un'altra opzione, oltre all'utilizzo di GetVersionEx e un'istruzione Select Case, per recuperare un nome di sistema operativo di facile utilizzo che sia anche relativamente a prova di futuro?

+0

cosa sulla Terra fa pensare che GetVersionEx non sarà supportato nelle versioni future di Windows? –

+2

@HansPassant Se si guarda la risposta e il codice di esempio, si vedrà che dopo aver utilizzato GetVersionEx è necessario eseguire un'istruzione Select complicata con valori hardcoded. Quindi ogni volta che esce una nuova versione di Windows devi correggere il codice. –

+5

Si tratta quindi di visualizzare il nome commerciale del sistema operativo ("Windows UltraModern Spiffy Penultimate Lunar Edition")? Piuttosto che rilevare la piattaforma per qualche motivo funzionale? – Bob77

risposta

7

Il WMI classes può essere utilizzato per estrarre i dati richiesti come segue:

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

Anche la stessa domanda mi infastidisce e testare la didascalia è l'unica alternativa di cui sono a conoscenza, ma è sicuro? –

+0

Sì, l'ho provato e l'ho implementato nel codice di produzione senza problemi. –

+0

Ah, so che funziona, non sono sicuro che Caption sia una proprietà di sola lettura? –

Problemi correlati