2009-12-16 3 views
0

값을 가져오고 레지스트리에 값을 설정하려고합니다.레지스트리 GetValue 함수

레지스트리에없는 경로에 액세스하려고 할 때 예외가 표시됩니다.

하지만 그 경로를 Registry.SetValue(keyName, "", 0);으로 설정하면 모든 것이 정상적으로 작동하고 기존 값이 아닌 값을 얻을 수 있습니다.

기존의 경로에 내 public int GetComponent(string RegKey) 기능을 사용할 수없는 이유는 무엇입니까?

using System; 
using System.Collections.Generic; 
using System.Text; 
using Microsoft.Win32; 


namespace LP_Misc 
{ 
    public class LP_Registery 
    { 
     private const string userRoot = "HKEY_CURRENT_USER"; 
     private const string subkey = @"Software\PCBMatrix\LPWizard"; 
     private string keyName ; 

     public LP_Registery(string folderName) 
     { 
      keyName = userRoot + "\\" + subkey + "\\" + folderName; 
      //Registry.SetValue(keyName, "", 0); 

     } 
     public int GetComponent(string RegKey) 
     { 
      return (int)Registry.GetValue(keyName, RegKey, 0); 

     } 
     public void SetComponent(string RegKey, int RegVal) 
     { 
      Registry.SetValue(keyName, RegKey, RegVal, RegistryValueKind.DWord); 
     } 



    } 
} 

그리고 가능한 경우 어떻게 할 수 있습니까?

감사합니다.

답변

1

시도로 GetValue를 둘러 싸서 블록을 차단하고 코딩을 즐기십시오.

예외 및 의 조건 GetValue :

에 SecurityException : 사용자는 레지스트리 키에서 읽는 데 필요한 권한을 가지고 있지 않습니다.

IOException이

: 지정된 값을 포함한다는 RegistryKey 삭제 표시 왔다.

ArgumentException : keyName이 유효한 레지스트리 루트로 시작하는 이 아닙니다.


SetValue를 방법 :

는 지정된 레지스트리 키에 지정된 이름/값 쌍을 설정합니다. 지정한 키가없는 경우 이 생성됩니다.

관련 문제