0

システムを新しい NK.bin ファイルで更新するとき、以前と同じ言語構成を維持したいと考えています。

レジストリから情報を読み取り、新しい NK.bin ファイルをコピーして、現在の NK.bin を置き換えるという提案がありました (はい、Windows がその NK.bin ファイルを使用して実行しているときにこれを行うことができます)。これが完了したら、値をレジストリに書き戻します。

私の理解では、これは再起動後に NK.bin に影響を与えるということです。これは、システムが再起動中に新しい NK.bin ファイルであることをここで認識してはならないことを意味します。

そして、それは正常に機能し、レジストリはその値を変更します。ただし、更新を行っているときは、システムの再起動で終了します。

その再起動後にログインすると、レジストリは正しい/読み込まれた値に変更されますが、間違った言語が表示されます。次に、もう一度再起動すると、言語は正しいです。

これを直接処理して、システムを最初から正しい言語で開始したいと考えています。

以下のコードは、再起動前の更新の最後のステップを示しています。新しい NK.bin ファイルがコピーされ、古いファイルが置き換えられます。

また、次のレジスタが変更されたが、2 回目の再起動まで有効にならないことも言う必要があります。

  • 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);
    
4

2 に答える 2