Rilevare la lingua con cui è stato installato un sistema
Talvolta può essere necessario rilevare la lingua con cui è stato installato un sistema dal punto di vista sistemistico o sviluppativo. Di seguito alcuni metodi con cui è possibile ricavare tale informazione tramite WMI.
Metodo 1: Query WMI da console
E’ possibile utilizzare la seguente query a riga di comando:
wmic os get locale, oslanguage, codeset
Dove oslanguage identifica la lingua del sistema operativo, mentre locale è l’identificativo della lingua utilizzato dal sistema (ovvero lo standard international numeric abbreviation per una country/region) e il codeset rappresenta la tabella dei caratteri usata dal sistema operativo per tradurre le stringhe nelle diverse lingue.
Di seguito il risultato per un sistema Windows Server 2012 R2 installato in Italiano:
Mentre di seguito il risultato per un sistema Windows Server 2012 R2 installato in Inglese con formato ora e valuta in italiano e layout di tastiera in italiano:
Per l’interpretazione dei codici numeri restituiti è possibile fare riferimento ai seguenti:
Di seguito ad esempio i valori per un sistema installato in Italiano:
- CodeSet = 1252 – ANSI Latin 1; Western European (Windows)
- Locale = 0410 – Italian – Italy
- OSLanguage = 1040 – Italian – Italy
Di seguito ad esempio i valori per un sistema installato in Inglese con formato ora e valuta in italiano e layout di tastiera in italiano:
- CodeSet = 1252 – ANSI Latin 1; Western European (Windows)
- Locale = 0410 – Italian – Italy
- OSLanguage = 1033 – English – United States
Metodo 2: Query WMI in un’applicazione
E’ possibile ricavare le informazioni relative a CodeSet, Locale e OSLanguage tramite la classe WMI Win32_OperatingSystem eseguendo una query WMI nel codice come illustrato in WMI Queries.
Di seguito un esempio di codice WMI in VB.NET:
Dim query As New System.Management.WqlObjectQuery(“SELECT CodeSet, Locale, OSLanguage FROM Win32_OperatingSystem”)
Using searcher As New System.Management.ManagementObjectSearcher(query)
Dim item = searcher.Get()(0)
MsgBox(String.Format(“CodeSet={0} Locale={1} OSLanguage={2}”, item(“CodeSet”), item(“Locale”), item(“OSLanguage”)))
End Using
Metodo 3: Query WMI in PowerShell
E’ possibile sfruttare WMI anche in ProwerShell sempre ricorrendo alla classe WMI Win32_OperatingSystem tramite il seguente codice:
$os = Get-WmiObject Win32_OperatingSystem
$os | Select-Object –Property Locale, OSLanguage, CodeSet
A partire da PowerShell 3.0 sono stati introdotti anche il cmdlet Get-Culture che permette di ricavare informazioni sulla culture del sistema e Get-UICulture che permette di ricavare informazioni sulla culture dell’interfaccia grafica sistema.