반응형
* 윈도우 레지스트리에 읽고 쓰고 만들고 지우기 예제
Form1.cs
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 CSharp_Resistry
{
public partial class Form1 : Form
{
string strTmp = "SOFTWARE\\"; //레지스트리 최상위 폴더 지정
string strAppName = "RegistryTest";
public Form1()
{
InitializeComponent();
//쓰기
WriteReg(strAppName, "Test1", "iii", "asdfasdf000");
WriteReg(strAppName, "Test2", "iii", "asdfasdf111");
WriteReg(strAppName, "Test3", "iii", "asdfasdf222");
WriteReg(strAppName, "Test4", "iii", "asdfasdf333");
//읽기
//MessageBox.Show(ReadReg(strAppName,"Test1","iii"));
//삭제
//DeleteReg(strAppName);
//등록된 목록 읽기
RegistryKey rk = Registry.CurrentUser.OpenSubKey(strTmp + strAppName);
string[] str = rk.GetSubKeyNames();
for (int iCount = 0; iCount < str.Length; iCount++)
{
lbList.Items.Add(str[iCount]);
}
}
//레지스트리도 폴더 개념으로 접근...
#region Registry Create & Read & Write & Delete...
private bool DeleteReg(string strSubKey)
{
RegistryKey rk = Registry.CurrentUser.OpenSubKey(strTmp, true);
try
{
//하위 폴더(레지스트리)가 있으면 삭제 안됨.
//if(rk !=null) rkDeleteSubKey(strSubKey);
//하위 폴더(레지스트리) 가 있던 없던 걍 삭제...
if (rk != null) rk.DeleteSubKeyTree(strSubKey);
}
catch (Exception ex)
{
return false;
}
return true;
}
//레지스트리 쓰기
private bool WriteReg(string strAppName,
string strSubKey,
string strKey,
string strValue)
{
RegistryKey rkReg = Registry.CurrentUser.OpenSubKey(strTmp + strAppName, true);
//null 이면 폴더(레지스트리)가 없으므로 만듬...
if (rkReg == null) rkReg = Registry.CurrentUser.CreateSubKey(strTmp + strAppName);
//OpenSubKey (하위폴더(레지스트리 이름) , 쓰기 선택 True 쓰기 False 및 인자가 없다면 읽기)
RegistryKey rkSub = Registry.CurrentUser.OpenSubKey(strTmp + strAppName + "\\" + strSubKey, true);
if (rkSub == null) rkSub = Registry.CurrentUser.CreateSubKey(strTmp + strAppName + "\\" + strSubKey);
try
{
rkSub.SetValue(strKey, strValue);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
return false;
}
return true;
}
//레지스트리 읽기
private string ReadReg(string strAppName,
string strSubKey,
string strKey)
{
RegistryKey reg;
try
{
reg = Registry.CurrentUser.OpenSubKey(strTmp + strAppName ).OpenSubKey(strSubKey);
}
catch (Exception ex)
{
return "";
}
return reg.GetValue(strKey, "").ToString();
}
#endregion
}
}
아래의 그림을 보면
HKEY_CUREENT_USER 가 트리뷰에서 보이게 됩니다.
즉 Registry.CurrentUser 는 저 레지스트리 폴더를 가르키게 되며
Registry.LocalMachine는 그 아래에 있는 HKEY_LOCAL_MACHINE 으로 들어가게 됩니다.
위 소스 Registry.CurrentUer.OpenSubKey("SOFTWARE") 는
레지스트리에 HKEY_CURRENT_USER => Software 폴더를 열겠다는 뜻
*레지스트리 편집기 (시작 -> 실행 -> regedit)
반응형
'C# Programming' 카테고리의 다른 글
[C#] File Create & Delete & Read & Write 예제 (0) | 2019.09.25 |
---|---|
[C#] INI File Create & Read & Write (0) | 2019.09.24 |
[C#] 소스 코드 동적 컴파일 예제 (0) | 2019.09.21 |
[C#] 객체 파일 저장 및 불러오기 예제 (Serialization) (0) | 2019.09.19 |
[C#] 구조체 를 바이트 배열로 또는 바이트 배열을 구조체로 변환 (0) | 2019.09.18 |