У меня есть предварительно настроенная виртуальная машина Windows 10, предоставленная службой облачных вычислений.
Все образы Win10, предоставляемые этим сервисом, имеют английский (США) как язык системы по умолчанию. Я не могу это контролировать.
Я хочу написать скрипт, который изменяет системную локаль (включая язык интерфейса, часовой пояс, информацию о культуре и т. д.) на другую локаль, например, немецкую (Германия).
Требования следующие:
- что переключение должно быть полностью автоматизировано, чтобы не требовалось никакого ручного взаимодействия с пользователем (т. е. не нужно ничего загружать вручную или что-либо менять в диалоговом окне настроек системы).
- что изменения должны быть постоянными (т.е. сохраняться после перезагрузки виртуальной машины).
Как мне это сделать?
решение1
я нашелстатья об этом.
Редактировать: Кажется, есть страница с пояснениями:https://renenyffenegger.ch/notes/Windows/registry/tree/HKEY_CURRENT_USER/Control-Panel/International/index
Первоначальный автор пришел к следующему решению, изменив первую часть для вашего de-DE:
$DefaultHKEY = "HKU\DEFAULT_USER"
$DefaultRegPath = "C:\Users\Default\NTUSER.DAT"
Set-Culture de-DE
Set-WinSystemLocale de-DE
Set-WinHomeLocation -GeoId 94 # Germany (see https://docs.microsoft.com/de-ch/windows/win32/intl/table-of-geographical-locations)
Set-WinUserLanguageList de-DE
reg load $DefaultHKEY $DefaultRegPath
reg import ".\de-DE-default.reg"
reg unload $DefaultHKEY
reg import ".\de-DE-welcome.reg"
и файлы реестра:
Windows Registry Editor Version 5.00
[HKEY_USERS\DEFAULT_USER\Control Panel\International]
"Locale"="00000407" ; source: https://renenyffenegger.ch/notes/Windows/development/Internationalization/language#windows-language-id
"LocaleName"="de-DE"
;"s1159"="AM"
;"s2359"="PM"
"sCountry"="Germany"
"sCurrency"="€"
"sDate"="/"
"sDecimal"="."
"sGrouping"="3;0"
"sLanguage"="ENG"
"sList"=","
"sLongDate"="dd MMMM yyyy"
"sMonDecimalSep"="."
"sMonGrouping"="3;0"
"sMonThousandSep"=","
"sNativeDigits"="0123456789"
"sNegativeSign"="-"
"sPositiveSign"="+"
"sShortDate"="dd/MM/yyyy"
"sThousand"=","
"sTime"=":"
"sTimeFormat"="HH:mm:ss"
"sShortTime"="HH:mm"
"sYearMonth"="MMMM yyyy"
"iCalendarType"="1"
"iCountry"="44"
"iCurrDigits"="2"
"iCurrency"="0"
"iDate"="1"
"iDigits"="2"
"NumShape"="1"
"iFirstDayOfWeek"="0"
"iFirstWeekOfYear"="2"
"iLZero"="1"
"iMeasure"="0"
"iNegCurr"="1"
"iNegNumber"="1"
"iPaperSize"="9"
"iTime"="1"
"iTimePrefix"="0"
"iTLZero"="1"
[HKEY_USERS\DEFAULT_USER\Control Panel\International\Geo]
"Nation"="242"
[HKEY_USERS\DEFAULT_USER\Control Panel\International\User Profile]
"Languages"=hex(7):65,00,6e,00,2d,00,47,00,42,00,00,00
"ShowAutoCorrection"=dword:00000001
"ShowTextPrediction"=dword:00000001
"ShowCasing"=dword:00000001
"ShowShiftLock"=dword:00000001
[HKEY_USERS\DEFAULT_USER\Control Panel\International\User Profile\en-GB]
"CachedLanguageName"="@Winlangdb.dll,-1110"
"0809:00000809"=dword:00000001
[HKEY_USERS\DEFAULT_USER\Control Panel\International\User Profile System Backup]
"Languages"=hex(7):65,00,6e,00,2d,00,47,00,42,00,00,00
"ShowAutoCorrection"=dword:00000001
"ShowTextPrediction"=dword:00000001
"ShowCasing"=dword:00000001
"ShowShiftLock"=dword:00000001
[HKEY_USERS\DEFAULT_USER\Control Panel\International\User Profile System Backup\en-GB]
"CachedLanguageName"="@Winlangdb.dll,-1110"
"0809:00000809"=dword:00000001
[HKEY_USERS\DEFAULT_USER\Keyboard Layout]
[HKEY_USERS\DEFAULT_USER\Keyboard Layout\Preload]
"1"="00000809"
[HKEY_USERS\DEFAULT_USER\Keyboard Layout\Substitutes]
[HKEY_USERS\DEFAULT_USER\Keyboard Layout\Toggle]
[HKEY_USERS\DEFAULT_USER\Control Panel\Desktop\MuiCached]
"MachinePreferredUILanguages"=hex(7):65,00,6e,00,2d,00,47,00,42,00,00,00,00,00
[HKEY_USERS\DEFAULT_USER\Control Panel\Desktop]
"PreferredUILanguages"=hex(7):65,00,6e,00,2d,00,47,00,42,00,00,00
Windows Registry Editor Version 5.00
[HKEY_USERS\.DEFAULT\Control Panel\International]
"Locale"="00000809"
"LocaleName"="en-GB"
"s1159"="AM"
"s2359"="PM"
"sCountry"="United Kingdom"
"sCurrency"="£"
"sDate"="/"
"sDecimal"="."
"sGrouping"="3;0"
"sLanguage"="ENG"
"sList"=","
"sLongDate"="dd MMMM yyyy"
"sMonDecimalSep"="."
"sMonGrouping"="3;0"
"sMonThousandSep"=","
"sNativeDigits"="0123456789"
"sNegativeSign"="-"
"sPositiveSign"="+"
"sShortDate"="dd/MM/yyyy"
"sThousand"=","
"sTime"=":"
"sTimeFormat"="HH:mm:ss"
"sShortTime"="HH:mm"
"sYearMonth"="MMMM yyyy"
"iCalendarType"="1"
"iCountry"="44"
"iCurrDigits"="2"
"iCurrency"="0"
"iDate"="1"
"iDigits"="2"
"NumShape"="1"
"iFirstDayOfWeek"="0"
"iFirstWeekOfYear"="2"
"iLZero"="1"
"iMeasure"="0"
"iNegCurr"="1"
"iNegNumber"="1"
"iPaperSize"="9"
"iTime"="1"
"iTimePrefix"="0"
"iTLZero"="1"
[HKEY_USERS\.DEFAULT\Control Panel\International\Geo]
"Nation"="242"
[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile]
"Languages"=hex(7):65,00,6e,00,2d,00,47,00,42,00,00,00
"ShowAutoCorrection"=dword:00000001
"ShowTextPrediction"=dword:00000001
"ShowCasing"=dword:00000001
"ShowShiftLock"=dword:00000001
[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile\en-GB]
"CachedLanguageName"="@Winlangdb.dll,-1110"
"0809:00000809"=dword:00000001
[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile System Backup]
"Languages"=hex(7):65,00,6e,00,2d,00,47,00,42,00,00,00
"ShowAutoCorrection"=dword:00000001
"ShowTextPrediction"=dword:00000001
"ShowCasing"=dword:00000001
"ShowShiftLock"=dword:00000001
[HKEY_USERS\.DEFAULT\Control Panel\International\User Profile System Backup\en-GB]
"CachedLanguageName"="@Winlangdb.dll,-1110"
"0809:00000809"=dword:00000001
[HKEY_USERS\.DEFAULT\Keyboard Layout]
[HKEY_USERS\.DEFAULT\Keyboard Layout\Preload]
"1"="00000809"
[HKEY_USERS\.DEFAULT\Keyboard Layout\Substitutes]
[HKEY_USERS\.DEFAULT\Keyboard Layout\Toggle]
[HKEY_USERS\.DEFAULT\Control Panel\Desktop\MuiCached]
"MachinePreferredUILanguages"=hex(7):65,00,6e,00,2d,00,47,00,42,00,00,00,00,00
[HKEY_USERS\.DEFAULT\Control Panel\Desktop]
"PreferredUILanguages"=hex(7):65,00,6e,00,2d,00,47,00,42,00,00,00