소년포비의 세계정복!!

[C#] 윈도우 레지스트리(Registry) 읽기/쓰기/관리 본문

프로그램 세상/C#

[C#] 윈도우 레지스트리(Registry) 읽기/쓰기/관리

소년포비 2009. 10. 11. 02:29

C# RegistryKey 클래스로 레지스트리 관리를 지원하고 있습니다.

RegistryKey 클래스를 사용하기 위해서는 Microsoft.Win32 네임스페이스를 사용해야 합니다.

-> using Microsoft.Win32

 

주로 쓰이는 것은 CreateSubKey(키 생성), SetValue(값 저장), GetValue(값 얻기) 입니다.

 

아래는 윈도우 폼으로 레지스트리를 사용하여 

윈도우 창의 색깔을 랜덤하게 바꾸는 프로그램입니다.

  using System;

  using System.Collections.Generic;

  using System.ComponentModel;

  using System.Data;

  using System.Drawing;

  using System.Text;

  using System.Windows.Forms;

  using Microsoft.Win32;

  

  namespace RegistryTEST

  {

          public partial class MainForm : Form

          {

                  private Color _BColor;

  

                  public MainForm()

                  {

                          InitializeComponent();

                  }

  

                  private void btnREAD_Click(object sender, EventArgs e)

                  {

                          RegistryKey reg;

                          reg = Registry.LocalMachine.CreateSubKey("Software").CreateSubKey("테스트"); 

  

                          int R = Convert.ToInt32(reg.GetValue("RED", -1));

                          int G = Convert.ToInt32(reg.GetValue("GREEN", -1));

                          int B = Convert.ToInt32(reg.GetValue("BLUE", -1));

  

                          if( R == -1 || G == -1 || B == -1 )

                          {

                                  lbOUT.Text = "레지스트리가 없습니다"; 

                                  return;

                          }

  

                          _BColor = Color.FromArgb(R, G, B);

  

                          lbOUT.Text = "읽기 : " + R + ", " + G + ", " + B;                    

                  }

  

                  private void btnWRITE_Click(object sender, EventArgs e)

                  {

                          RegistryKey reg;

                          reg = Registry.LocalMachine.CreateSubKey("Software").CreateSubKey("테스트"); 

  

                          Random r = new Random();

                          int R = r.Next(0, 255);

                          int G = r.Next(0, 255);

                          int B = r.Next(0, 255);

  

                          reg.SetValue("RED", R);

                          reg.SetValue("GREEN", G);

                          reg.SetValue("BLUE", B);

  

                          lbOUT.Text = "쓰기 : " + R + ", " + G + ", " + B;

                  }

  

                  private void btnLOAD_Click(object sender, EventArgs e)

                  {

                          if( _BColor.IsEmpty )

                          {

                                  lbOUT.Text = "레지스트리를 읽어주세요"; 

                                  return;

                          }

  

                          this.BackColor = _BColor;

                  }

  

         }

  }

 

레지스트리값은 [HKEY_LOCAL_MACHINE\SOFTWARE\테스트] 입니다