본문 바로가기
프로그래밍/C#

[C#] 레지스트리 사용법 (읽기, 쓰기, 삭제, 64bit or 32bit)

by tempus 2021. 9. 6.
반응형

레지스트리(Registry)란?

Microsoft Window 32/64bit 버전과 윈도우 모바일 운영체제의 설정과 선택 항목을 담고 있는 데이터 베이스입니다. 주로 윈도우즈 환경 설정과 관련된 각종 정보가 등록된 곳입니다. 레지스트리에 들어간 데이터들은 레지스트리 편집기에서 확인할 수 있습니다.

 

 

레지스트리 편집기를 열기 위해서는 [시작] -> [검색]에 레지스트리 편집기를 검색하거나 [시작] -> [실행]에서 regedit을 검색하면 들어갈 수 있습니다. 하위에는 5개의 서브 트리로 구성되어 있습니다.


C#에서 레지스트리 사용법

나 같은 경우에는 프로그램이 네트워크 오류로 인해 오프라인 모드 상태 일 때, 해당 기간을 체크하기 위해 해당 데이터를 레지스트리에 등록하기로 했습니다.


우선 아래의 네임스페이스를 추가해야 레지스트리 클래스를 사용할 수 있습니다.


using Microsoft.Win32;

레지스트리 하위 키 생성(CreateSubKey) - 64bit or 32bit

그리고 나는 HKEY_LOCAL_MACHINE에 데이터를 추가할 것입니다.


 RegistryKey reg = Registry.LocalMachine.CreateSubKey("SOFTWARE").CreateSubKey("Hi");

여기서 주의할 것은 본인 컴퓨터가 32bit냐? 64bit냐? 에 따라 생성되는 위치가 달라집니다.

  • 32bit : HKEY_LOCAL_MACHINE\SOFTWARE\HI 위치에 만들어질 것입니다.
  • 64bit : HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\HI 위치에 만들어질 것입니다.

저 같은 경우는 64 bit여서 아래 그림과 같이 해당 위치에 폴더가 만들어졌습니다.

 


레지스트리 키에 값 쓰기(SetValue)

다음과 같이 해당 키에 값을 부여할 수 있습니다. 그리고 두 번째 인자는 일반적으로 자료형에 상관없이 문자열 형(REG_SZ)으로 저장됩니다. OpenSubKey()는 하위 키를 열 때 사용하는 함수입니다. 요청된 하위 키가 존재할 시 하위 키가 반환되며, 없을 경우 null을 반환합니다.


이때 주의해야 하는 것은 OpenSubKey()로 키를 열면 "읽기 전용"으로 열게 됩니다. 이때 값을 쓰게 되면 "레지스트리 키에 쓸 수 없습니다."라는 오류가 발생할 것입니다. 이를 해결하기 위해서는 OpenSubKey(String keyName, boolean writable)로 열면 됩니다.


/*방법 1*/
RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Hi", true);
reg.SetValue("test", DateTime.Now.ToString("MM/dd/yyyy"));

/*방법 2*/
RegistryKey reg = Registry.LocalMachine.CreateSubKey("SOFTWARE").CreateSubKey("Hi");
reg.SetValue("test", DateTime.Now.ToString("MM/dd/yyyy"));

 



레지스트리 키에 값 가져오기(GetValue)

키에서 값을 가져오고 싶을 때는 GetValue()를 사용해서 가져오면 됩니다.


RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Hi");
Debug.WriteLine(reg.GetValue("test").ToString());

레지스트리 키에 값 삭제(DeleteValue)

키에서 값을 제거하고 싶을 때는 DeleteValue()를 사용하면 됩니다.


RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Hi");
reg.DeleteValue("test");
반응형

댓글


loading