Menubar

viernes, 1 de junio de 2018

Saber el idioma de instalación de Windows desde VB.Net

Por J. Manuel Mar H. Editar
Compartir en Facebook
Compartir en Twitter
Compartir en MeWe
Enviar a Reddit
Guardar en Internet archive
Guardar en  archive.today
Enviar por email
Microsoft Windows  Antes que nada una disculpa por no escribir últimamente, he andado ocupado con algo de trabajo, pero aquí estamos de regreso. En esta ocasión quiero mostrar como saber en que idioma se encuentra instalado nuestro Windows usando VB.Net


Publicidad


  Usando VB.Net tenemos una manera muy sencilla de saberlo, para ello solo hay que recurrir a la instrucción:

Try
   culture = Thread.CurrentThread.CurrentCulture.Name.Trim
Catch exp As Exception
   culture = "en-us"
End Try

  Así de simple, ya en la variable culture tenemos las iniciales del lenguaje de Windows, sin embargo en el trabajo tenemos una máquina con Windows instalado, pero en el idioma inglés y esta función retornaba la cadena es-ES, por lo que provocaba resultados incorrectos.

  Así que decidí investigar un poco más del tema: resulta que Windows mantiene en el registro una llave que especifica el idioma, lo que hace que sea más confiable que la rutina antes mencionada.

 '#### Purpose: Return user culture language
 '#### Created date: 19/02/2015
 '#### Created by username: Juan Manuel Mar Hdz.
 '#### Last modified date: 16/04/2018
 '#### Last modified username: Juan Manuel Mar Hdz.
 '#### Thanks to https://www.howtogeek.com/forum/topic/change-display-language-using-regedit-in-windows-7
  Public Function getLanguage() As String
 
  Dim culture As String, subkeys() As String
  Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine
 
  key = key.OpenSubKey("SYSTEM\CurrentControlSet\Control\MUI\UILanguages")
 
  If key IsNot Nothing Then
 
  If key.SubKeyCount > 0 Then
 
  Try
 
  subkeys = key.GetSubKeyNames
  culture = subkeys(0).Trim
 
  Catch exp As Exception
  culture = ""
  End Try
 
  Else
 
  Try
  culture = Thread.CurrentThread.CurrentCulture.Name.Trim
  Catch exp As Exception
  culture = "en-us"
  End Try
 
  End If
 
  Else
 
  Try
  culture = Thread.CurrentThread.CurrentCulture.Name.Trim
  Catch exp As Exception
  culture = "en-us"
  End Try
 
  End If
 
  If culture.IsNullOrEmpty(culture) = True Then
  Return "en-us"
  Else
  Return culture.Trim
  End If
 
  End Function

  Lo anterior es la rutina mejorada. Como podemos ver lo que se hace es extraer el contenido de la llave SYSTEM\CurrentControlSet\Control\MUI\UILanguages, si hay un valor retornaremos el lenguaje de instalación, si falla el procedimiento entonces haremos uso de la función nativa de VB.Net; y en caso de cualquier error retornaremos un lenguaje predeterminado (en-US).

Procedencia de las imágenes:
File: Caja de instalación de Microsoft Windows
URL: http://mlm-s2-p.mlstatic.com/sistemas-operativos-software-juegos-pc-339801-MLM20437678808_102015-S.jpg
Licencia: Creative Commons

¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.



Licencia de Creative Commons Esta obra está bajo una licencia de Creative Commons Reconocimiento 4.0 Internacional, haga clic aquí para conocer más detalles.


Compartir:



Directorio de blogs, ¡agrega el tuyo!
Programas para el mantenimiento de Windows
Blog de seguridad informatica