c# 에서 레지스트리를 읽고 쓰는 방법은 크게 어렵지 않다.
RegistryKey 클래스를 사용하면 된다.
RegistryKey 클래스를 사용하려면 소스 상단에
using Microsoft.Win32;
를 포함시켜주면 된다.
Name |
키 이름 |
SubKeyCount |
현재 키에 대한 기본 수준의 하위 키 개수 |
ValueCount |
키값 개수 |
Close |
키 닫음 |
CreateSubKey |
하위 키 생성 / 열기 |
DeleteSubKey |
하위 키 삭제 |
DeleteSubKeyTree |
하위 키와 트리로 연결된 자식 노드 키 삭제 |
DeleteValue |
키값 삭제 |
Equals |
Object 비교 |
Flush |
레지스트리 데이터 저장 |
GetSubKeyNames |
하위키의 이름 모두 검색 (배열) |
GetValue |
키값 얻어옴 |
GetValueNames |
키 이름이 포함된 모든 키값 얻어옴 |
OpenRemoteBaseKey |
외부 컴퓨터에서 요청된 키를 나타내는 새 RegistryKey 를 열음 |
OpenSubKey |
지정된 쓰기 권한을 사용하여 지정된 하위 키를 검색함 |
SetValue |
키값 저장 |
자 먼저 레지스트리의 값을 생성해보자.
RegistryKey reg;
|
이렇게 하면 레지스트리의 값을 쓰거나 읽을 수 있게 되었다.
reg.SetValue("Text", "글을 입력하겠소"); // 값을 저장한다. reg.GetValue("Text", "없음") // text라는 이름을 가진 값을 가져온다. // 이때 값이 없다면 "없음" 이라고 값을 얻어온다. reg.GetValue("Text") // text라는 이름을 가진 값을 가져온다.
|
그래서 RegistryKey 클래스의 멤버는 많지만 주로 사용하는건 SetValue(), GetValue() 정도 이다.
여기서 레지스트리의 값을 삭제하려면 어떻게 해야 할까?
reg.DeleteSubKey("Text", false); // 값을 삭제한다. Registry.LocalMachine.DeleteSubKey("Software\\RegistryKeyTest"); // 레지스트리키를 삭제한다.
|
와 같이 하면 된다.
RegistryKey 를 이용해서 예제 프로그램을 한번 만들어보자!!!
프로그램을 실행하면 레지스트리의 키값을 받아오면서 값을 읽어오고,
Reg Save/close 버튼을 누르면 레지스트리의 값을 저장하면서 프로그램을 닫는다.
Reg Delete 버튼을 누르면 생성한 레지스트를 삭제한다.
using System;
namespace RegistryKeyTest { string m_strText = ""; int m_nNum = 0; bool m_bCheck = false;
public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { RegistryKey reg; reg = Registry.LocalMachine.CreateSubKey("Software").CreateSubKey("RegistryKeyTest"); m_strText = Convert.ToString(reg.GetValue("Text", "")); m_nNum = Convert.ToInt32(reg.GetValue("Num", 0)); m_bCheck = Convert.ToBoolean(reg.GetValue("Check", false)); if (m_strText == "" || m_nNum == 0 || !m_bCheck) { MessageBox.Show("레지스트리가 존재하지 않습니다."); }
if (reg.ValueCount > 0) { m_strText = Convert.ToString(reg.GetValue("Text")); m_nNum = Convert.ToInt32(reg.GetValue("Num")); m_bCheck = Convert.ToBoolean(reg.GetValue("Check")); } else { MessageBox.Show("레지스트리가 존재하지 않습니다."); } reg.Close(); textBox1.Text = m_strText; textBox2.Text = m_nNum.ToString(); checkBox1.Checked = m_bCheck; }
private void button1_Click(object sender, EventArgs e) { m_strText = textBox1.Text; m_nNum = int.Parse(textBox2.Text); m_bCheck = checkBox1.Checked;
RegistryKey reg; reg = Registry.LocalMachine.CreateSubKey("Software").CreateSubKey("RegistryKeyTest"); reg.SetValue("Text", m_strText); reg.SetValue("Num", m_nNum); reg.SetValue("Check", m_bCheck); reg.Close(); this.Close(); }
private void button2_Click(object sender, EventArgs e) { RegistryKey reg; reg = Registry.LocalMachine.CreateSubKey("Software").CreateSubKey("RegistryKeyTest"); reg.DeleteSubKey("Text", false); reg.DeleteSubKey("Num", false); reg.DeleteSubKey("Check", false); Registry.LocalMachine.DeleteSubKey("Software\\RegistryKeyTest"); reg.Close(); this.Close(); } } |
실행 > regedit 를 입력하여 레지스트리를 직접 확인해보자!
레지스트리의 값이 생성되고 삭제되는 걸 확인 할 수 있다.
'Language > C# WPF' 카테고리의 다른 글
[C#] ConfigurationManager.AppSettings 사용하기 (0) | 2014.11.10 |
---|---|
[C#] OS에 따른 Form크기의 자동 배율 조정 (0) | 2014.09.04 |
[C#] CultureInfo 이름찾아보기 (0) | 2014.07.06 |
[C#] 외부 프로그램 실행, 그리고 죽이기 (2) | 2014.06.22 |
[C#] 프로그램 시작 경로 알기 2가지 (0) | 2014.06.21 |