Registry 다루기




 보통 지금까지 많은 윈도우즈 응용프로그램들이 자신의 정보를 저장하기 위하여 ini 파일 및 레지스트리를 사용하였다. 레지스트리는 응용프로그램, 사용자 및 기본 시스템 설정 정보에 대한 저장소 역할을 수행한다.
 .Net Framework 플랫폼에서의 응용프로그램은 어셈블리에 그 정보를 저장하기도 하고, WPF 에서는 응용프로그램 설정 이라고 하여 따로 파일을 하나 사용한다. 개인 적으로 레지스트리에 정보를 저장하는 방법을 별로 좋아하지는 않지만 알아 두어야 할 것 같다.



■ Namespace

using Microsoft.Win32;

Microsoft.Win32 네임스페이스를 사용한다. 이 네임스페이스 안에는 두가지 유형의 클래스들이 정의되어 있다.
- 운영체제(OS) 에서 발생시킨 이벤트를 처리하는 클래스
- 시스템 레지스트리를 관리하는 클래스

cf) MSDN : Microsoft.Win32 네임스페이스



■ Registry, RegistryKey  Class

Registry

Windows 기반 컴퓨터의 레지스트리에 있는 표준 루트 키 집합을 제공한다.

즉, 요 놈들을 말한다.

MSDN 을 보니 PerformanceData, DynData 루트 키도 있다고 하는데 난 보질 못했다...

사용 방법은 다음과 같다.

이미지 출처 : MSDN

Registry.Users 값을 할당해 줌 으로써 rk 는 HKEY_USERS 하위의 레지스트리 키에 접근/조작 가능하다.


RegistryKey

Windows Registry 의 키 수준 노드를 나타 낸다고 MSDN에 써 있는데... 첨엔 몬소린가 했다. ㅋㅋㅋ
즉, Registry 클래스를 통하여 레지스트리의 트리 구조에 접근하고, RegistryKey 클래스 인스턴스를 통하여 레지스트리 키 값을 추가/삭제/수정 할 수 있다는 것이다. "키 수준의 노드" 란 말이 레지스트리 트리에서 레지스트리 키를 지칭하는 것 같다.

사용 방법은 다음과 같다.


Registry.SetValue() 메소드를 통해서 키 값을 설정하고 있다.
여기서 알 수 있는 것은 레지스트리 경로를 궂이 Registry 클래스를 통해서 얻지 않아도 된다.



■ 사용 예











또한 레지스트리의 HKLM 의 경우 관리자 권한의 응용프로그램만이 쓰기 권한이 가능하다.
따라서 Windows Vista 에서는 UAC 에 의해 접근 실패할 것이다. 응용프로그램의 메니페스트를 수정하여 응용프로그램이 항상 관리자 권한으로 수행될 수 있게 권한을 상승시키자.
참조) Windows Vista 이상 OS 에서 응용프로그램 권한 상승
Posted by six605
,