viernes, 14 de septiembre de 2007

Cambiando la configuración regional desde C# via Registro De Windows

Cuando Desarrollamos para Dispositivos Móviles basados en Windows, muchas veces queremos que nuestro usuario solo corra nuestro programa o que el usuario solo acceda a ciertas características ya sea cambiar la hora o el idioma, el separador decimal u otros parámetros configurables que no nos conviene que cambien en estos casos siempre elegimos correr el dispositivo en kiosk mode. Y muchas veces tenemos que configurar muchos de esos parámetros desde Nuestro propio Codigo!

Ahora vamos a la practica!

Ingredientes
1 Namespace Microsoft.Win32
2 Clases RegistryKey, Registry del manespace Microsoft.Win32
1 Documentación Sobre Language Identifiers and Locales
1 Documentation Sobre NLS Registry Settings
Y el foro de La MSDN en Ingles

Antes de iniciar deberías leer los ingredientes y sus links, para que tengas idea de lo que se esta haciendo, pero en resumidas cuentas cambiaremos los registros de Windows que nos indican la configuración regional luego refrescaremos el registro de Windows y Reiniciamos el dispositivo

private static void CambiarConfiguracionRegional()
{
try
{
RegistryKey clave = Registry.LocalMachine.OpenSubKey("nls", true);
clave.SetValue("DefaultLCID",
0x240a);//Colombia
clave.Close();

clave = Registry.LocalMachine.OpenSubKey("nls\\overrides", true);
clave.SetValue("LCID",
0x240a);//Colombia
clave.Close();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Mucha Suerte a todos!

1 comentario:

Leon dijo...

Gracias por la solución, asertadisima.

Solo ampliando

Para tener acceso a la clase registrykey, se debe declarar

using System.Security.Permissions;
using Microsoft.Win32;

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum,
ViewAndModify = "HKEY_CURRENT_USER")]