Search notes:

Registry: HKEY_CURRENT_USER\Control Panel\International

The HKEY_CURRENT_USER\Control Panel\International key stores the values that can be changed with the region control panel.
All values in this key are REG_SZ. A value-name's prefix of s seems to indicate that a «real» string is expected while i seems to indicate an integer value.
Value name Description Example Comment
Locale 00000409 The hexadecimal representation of a language id.
LocaleName en-US
s1159 AM
s2359 PM
sCountry United States
sCurrency Currency symbol $
sDate / These (up to 4, including NULL) characters correspond to the separators of day, month and year. (Deprecated in favor of sShortDate)
sDecimal Decimal Symbol .
sGrouping Digit grouping 3;0
sLanguage ENU
sList List separator , The value of the list separator greatly influences the behavior of Excel, for example when importing/exporting CSV data or if an Excel worksheet function separates arguments with a semicolon or a comma.
sLongDate Long date format dddd, MMMM d, yyyy
sMonDecimalSep Decimal symbol (currency) .
sMonGrouping Digit grouping (currency) 3;0
sMonThousandSep Digit grouping symbol (currency) ,
sNativeDigits Standard digits 0123456789 Can for example be set to Chinese digits (〇一二三四五六七八九)
sNegativeSign -
sPositiveSign
sShortDate Short date format M/d/yyyy
sThousand ,
sTime :
sTimeFormat Long time format h:mm:ss tt
sShortTime Short time format h:mm tt
sYearMonth MMMM yyyy
iCalendarType 1
iCountry 1
iCurrDigits Number of digits after decimal (Currency) 2 (get-culture).NumberFormat.CurrencyDecimalDigits
iCurrency Positive currency format 0 How x currency units are displayed: 0 = $x,
iDate 0 The short-date format ordering specifier: 0 = month, day, year; 1 = day, month, year, 2 = year, month, day. (sShortDate is preferred over iDate).
iDigits Number of digits after decimal 2
NumShape Use native digits 1 1 = Never
iFirstDayOfWeek 6 0 = Monday, … 6 = Sunday
iFirstWeekOfYear 0
iLZero Display leading zeroes 1
iMeasure Measurement system 1 0: Metric, 1: U.S.
iNegCurr Negative currency format 0
iNegNumber Negative number format 1
iPaperSize 1
iTime 0
iTimePrefix 0
iTLZero 0

Format specifiers

The following table tries to list the format specifiers that can be used in date and time related formats (such as sShortDate or sShortTime):
d / dd Day (ordinal) without/with leading zero
dddd Name of day
h / hh Hour, without/with leading zero
M / MM Month, without/with leading zero
MMMM Name of month
ss seconds
tt AM / PM ; changes hour to 12-format
See also Setting date and time formats with intl.cpl.

Modifying some settings in a PowerShell script

with get/set-culture

The PowerShell cmdLet nount culture can be used to modify some (all) values in this registry key:
$culture = get-culture
                                                             #  Value being is changed
                                                             # --------------------------
$culture.dateTimeFormat.shortDatePattern      = 'yyyy-MM-dd' #  sShortDate, sDate, iDate
$culture.dateTimeFormat.shortTimePattern      = 'HH:mm'      #  HH is supposed to be 24 hours, why does it not seem to be working.
$culture.dateTimeFormat.pmDesignator          = ''           #  Don't show AM/PM

$culture.numberFormat.currencyPositivePattern =  2           #  iCurrency
$culture.numberFormat.CurrencySymbol          = 'EUR'        #  sCurrency

#
# Changing the list separator seems to
# be broken.
#   https://github.com/dotnet/runtime/issues/43795
# use list-separator.ps1 instead.
#  
#
$culture.textInfo.listSeparator               = ','          #  sList

set-culture $culture

With set-itemProperty

Of course, it is also possible to directly change the values in the registry with set-itemProperty.
In fact, this method seems to be required in order to have a 24-hours without AM/PM designator, as per this superuser answer.
The following PowerShell script changes some of format settings that are specified in this registry key:
set-itemProperty 'hkcu:\Control Panel\International' sShortDate 'yyyy-MM-dd'
set-itemProperty 'hkcu:\Control Panel\International' sShortTime 'HH:mm'      # Seconds not possible?
I am not sure what the best way is to apply the modifications after the script is run. Maybe something like the following:
get-process explorer | stop-process
explorer

Setting the list separator

Setting the list separator with set-culture seems to be broken in .NET 5. The list separator can be set «directly» with the following PowerShell script:
param (
  [char] $listSeparator
)

set-itemProperty 'hkcu:\Control Panel\International' sList $listSeparator
Github repository about-Windows-Registry, path: /HKEY_CURRENT_USER/Control Panel/International/list-separator.ps1

Relation to Excel

The value of sList (list separator) determines if function arguments must be separated by commas or semicolons.
In Excel's object model, some of these settings can be queried via application.international(…).

See also

These values might be changed with the intl.cpl control panel.
CmdLet nouns for international settings
International settings
HKEY_CURRENT_USER\Control Panel

Links

The LOCALE_… constants

Index