2017-10-04 23 views
0

私はしばらく検索してきましたが、何も見つかりませんでした。C#レジストリに文字列を追加

これは機能しますが、完全ではありません。レジストリ内のフォルダを検索しますが、文字列は作成されません。私はパーミッションやそのようなものについては何の誤りもありません。私はこれを管理者として実行しています。

  try 
     { 
      RegistryKey registryKey = Registry.LocalMachine; 
      registryKey.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation", RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryOptions.None); 

      registryKey.SetValue("Test1","Test2"); 
      registryKey.Close(); 

      return true; 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show(e.ToString()); 
      return false; 
     } 

私は間違っていますか?それとも、私は何か重要なものを逃していますか

おかげで、私はそれを修正することができたの@ stephen.vakilへ DaNeubi

+3

は思え - あなたは 'CreateSubKey'の結果をキャプチャして、' SetValue'を行う必要がありますその上に –

答えて

0

感謝。ここで

は私のコードは今です:あなたはLocalMachine` `のルートに` Test1`を設定しようとしているように

 public static Boolean WriteToRegistry(String[] OEMInformations) 
    { 
     try 
     { 
      for (int i = 0; i < OEMInformations.Length; i = i +2) 
      { 
       RegistryKey mainKey = Registry.LocalMachine; 
       RegistryKey firstKey = mainKey.OpenSubKey("SOFTWARE", true); 
       RegistryKey secondKey = firstKey.OpenSubKey("Microsoft", true); 
       RegistryKey thirdKey = secondKey.OpenSubKey("Windows", true); 
       RegistryKey fourthKey = thirdKey.OpenSubKey("CurrentVersion", true); 
       RegistryKey fifthKey = fourthKey.OpenSubKey("OEMInformation", true); 

       fifthKey.SetValue(OEMInformations[i],OEMInformations[i + 1], RegistryValueKind.String); 

       fifthKey.Close(); 
       fourthKey.Close(); 
       thirdKey.Close(); 
       secondKey.Close(); 
       firstKey.Close(); 
       mainKey.Close(); 
      } 
      return true; 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show(e.ToString()); 
      return false; 
     } 
    } 
関連する問題