当我用新的 NK.bin 文件更新我的系统时,我想保持我以前的语言配置。
有人建议我从注册表中读取信息,然后复制我的新 NK.bin 文件,替换当前的 NK.bin(是的,您可以在 Windows 使用该 NK.bin 文件运行时执行此操作)。完成后,我将值写回注册表。
我的理解是重启后会影响NK.bin。这意味着系统在重新启动期间不应该在这里注意到它是一个新的 NK.bin 文件。
它工作正常,注册表改变了它的值。但是,当我进行更新时,它以重新启动系统结束。
当我重新启动后登录时,注册表更改为正确/加载的值,但它显示错误的语言。然后再次重新启动后,语言是正确的。
我想直接处理这个问题,让系统从一开始就以正确的语言启动。
下面的代码显示了我在重新启动之前更新的最后一步。新的 NK.bin 文件只是被复制并替换了旧文件。
还应该说以下寄存器已更改,但要到第二次重新启动才会生效:
- cSysLang = @"MUI";
- cDefaultLCID = @"nls";
- cTouchCalibrationData = @"HARDWARE\DEVICEMAP\TOUCH";
- cKeyboardDefaultSubKeyStr = @"键盘布局\预加载";
- cLangSubKeyStrCurrUsr = @"MUI";
cLangSubKeyStr = @"nls\overrides";
private void LoadDataAfterInstallation() { //langauge Microsoft.Win32.RegistryKey regLanguage = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(cLangSubKeyStrCurrUsr, true); if (!(languageRegInfo==0)) regLanguage.SetValue("CurLang", languageRegInfo);