Te doy la respuesta desde la más aceptable desde mi punto de vista a la menos aceptable. La primera; copia el siguiente script en un archivo batch (.CMD)
Código:
@echo off
echo [RegionalSettings]>intl.tmp
echo UserLocale=%1>>intl.tmp
rundll32.exe shell32,Control_RunDLL intl.cpl,,/f:"%~d0%~p0intl.tmp"
del intl.tmp
La forma de ejecutarlo es
intl.cmd 400A, donde 400A es
LCID correspondiente a la combinacion
Español (Bolivia). Puedes ajustarlo a tus necesidades y hace justo lo que estás buscando.
Otra forma sería obtener las combinaciones individuales dado un LCID y cambiar valor por valor con la API
SetLocaleInfo.
Otra sería cambiar directamente los valores del registro
[HKEY_CURRENT_USER\Control Panel\International].
Otra forma sería utilizando las APIs
NtSetDefaultUILanguage y
NtSetDefaultLocale. Pero no estoy seguro si pueden ser llamadas a "nivel de aplicación".
Otra forma sería utilizando la API
SetupChangeLocaleEx, lo malo de ésta es que no está documentada
PD; revisar tambien API
SetUserGeoID
Saludos