C# 레지스트리 등록, 읽기 (Registry SubKey, GetValue)

C#에서 레지스트리를 등록하고 읽는 방법에 대해 알아보도록 하겠습니다. 목차는 다음과 같습니다. 😘

  • 레지스트리(Registry)
  • 레지스트리 등록(CreateSubKey)
  • 레지스트리 읽기(GetValue)

레지스트리(Registry)

C# 레지스트리

C#은 Microsoft.Win32 네임스페이스의 Registry 클래스를 이용하여 레지스트리 편집기에 접근할 수 있습니다.
키 최초 생성과 값을 읽는 예시 자료입니다.

레지스트리 등록(CreateSubKey)

string subKey = "BEOMSANG";
string keyName = "NAME";
string keyValue = "HELLO!";

using (RegistryKey k1 = Registry.CurrentUser.OpenSubKey("Software", true))
{
    using (RegistryKey k2 = k1.CreateSubKey(subKey))
    {
        //if (k2.GetValue(keyName) == null)
        {
            k2.SetValue(keyName, keyValue);
        }
    }
}

현재 사용자 설정 > Software 폴더에 BEOMSANG 폴더를 만들고 NAME 키를 HELLO! 값으로 등록하였습니다.
//if (k2.GetValue(keyName) == null)
이 부분을 주석으로 처리하였는데 주석을 포함하면 최초 1회만 생성(null인 경우) 합니다.
주석을 제외하면 실행 시마다 값을 설정합니다.

레지스트리 읽기(GetValue)

string subKey = "BEOMSANG";
string keyName = "NAME";

string rtn = string.Empty;

using (RegistryKey k1 = Registry.CurrentUser.OpenSubKey("Software", true))
{
    using (RegistryKey k2 = k1.CreateSubKey(subKey))
    {
        object o = k2.GetValue(keyName);
        if (o != null)
        {
            rtn = o.ToString();
        }
    }
}

현재 사용자 설정 > Software에서 BEOMSANG 폴더의 NAME 값을 가져옵니다.
레지스트리 GetValue의 반환 값은 오브젝트이므로 등록되지 않은 값을 읽으려고 할 때는 null을 반환합니다.
ToString 시 null 인 경우 NullReferenceException 예외가 발생할 수 있습니다.

댓글