본문 바로가기

프로그램 경험/.Net

[C#] 레지스트리 다루기

프로그램을 하다보면 간단하게 값을 저장하고 싶을때가 있다.
그럴때 레지스트리에 저장하면 간단하게 사용할수 있다.



using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.Win32;

namespace Exams
{
    public partial class RegistryExam : Form
    {
        public RegistryExam()
        {
            InitializeComponent();
        }

        private void CreateButton_Click(object sender, EventArgs e)
        {
            //키 생성하기
            RegistryKey regKey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\TestKey", RegistryKeyPermissionCheck.ReadWriteSubTree);

            //값 저장하기
            regKey.SetValue("문자열 값", "새로운 문자열 값을 생성합니다.", RegistryValueKind.String);
            regKey.SetValue("이진값", new byte[] { 41, 11, 81 }, RegistryValueKind.Binary);
            regKey.SetValue("DWORD", 0x20, RegistryValueKind.DWord);
            regKey.SetValue("QWORD", 0x20, RegistryValueKind.QWord);
            regKey.SetValue("다중 문자열 값", new string[] { "첫행", "둘째행" }, RegistryValueKind.MultiString);
            regKey.SetValue("확장 가능한 문자열 값", "이건 무한히 길게 간다는 뜻인가?", RegistryValueKind.ExpandString);
        }

        private void LoadButton_Click(object sender, EventArgs e)
        {
            //키 로드
            RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\TestKey", RegistryKeyPermissionCheck.ReadWriteSubTree);

            //값 가져오기
            textEdit1.Text = regKey.GetValue("문자열 값").ToString();
        }

        private void DeleteButton_Click(object sender, EventArgs e)
        {
            //키 로드
            RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\TestKey", RegistryKeyPermissionCheck.ReadWriteSubTree);

            //값 삭제 하기
            //두번째 매개변수는 존재하지 않는 값이름을 지정시 예외를 발생할것인지 여부(true:예외발생)
            //regKey.DeleteValue("없는값", true);        //예외 발생

            regKey.DeleteValue("문자열 값", false);
            regKey.DeleteValue("이진값", false);

            //하위키 전체 삭제            
            Registry.LocalMachine.DeleteSubKey(@"SOFTWARE\TestKey");
        }
    }
}