2017-10-04 3 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; 
     } 

내가 뭘 잘못하고 있니? 아니면 중요한 것을 놓친 것입니까? @에

감사 DaNeubi는

+3

이 보인다 - 당신은'할 다음 SetValue'을 CreateSubKey''의 결과를 캡처 할 필요가 그거에 –

답변

0

덕분에 내가 그것을 고칠 수 있었다 stephen.vakil.

여기 내 코드는 지금 : 당신이 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; 
     } 
    } 
관련 문제