IT
C# Registry (기본값) 읽기/쓰기
Windows Registry
주로 윈도우즈 환경 설정과 관련된 각종 정보가 저장되어 있는 집합소라고 보시면 됩니다. 그래서 여기 있는 값을 함부로 수정하면 윈도우가 맛이 가버릴 수도....안됩니다. 레지스트리 값은 레지스트리 편집기에서 확인 및 수정할 수 있습니다.

레지스트리 편집기는 [시작]->[검색](단축키 : Win + Q)에서 레지스트리 편집기를 검색하거나 [시작]->[실행](단축키 : Win + R)에서 regedit를 입력해서 실행해주시면 됩니다.
C#으로 Registry 값 관리
Microsoft.Win32 라이브러리를 사용해서 Registry를 관리할 수 있습니다. 아래와 같이 네임스페이스를 추가해줍니다.
using Microsoft.Win32;
- Registry 키 생성 및 값 쓰기
RegistryKey rk = null;
// 운영체제가 32bit인지 64bit인지 확인하여 registry 키 오픈
if (Environment.Is64BitOperatingSystem)
rk = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
else
rk = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
// 키 생성
rk = rk.CreateSubKey(@"SOFTWARE\HelloRegistry", RegistryKeyPermissionCheck.ReadWriteSubTree);
// 생성한 키에 값 쓰기
rk.SetValue("testKey", "testValue", RegistryValueKind.String);
// (기본값) 키에 값 쓰기
// rk.SetValue("", "testValue", RegistryValueKind.String);
// 오픈한 키 닫기
rk.Close();
Registry의 저장값은 운영체제가 32bit인지, 64bit인지에 따라 값이 저장되는 경로가 다릅니다.
그래서 키 생성하기 전에 먼저 운영체제가 몇 bit 운영체제인지 확인하고 그에 맞는 경로에 키생성 및 키 값을 작성해줘야 합니다.
키 이름이 (기본값)인 곳에 값을 쓰고 싶다면 키이름을 "" 으로 넣어주면 됩니다.
rk.SetValue("", "testValue", RegistryValueKind.String);
- Registry 키 값 읽기
string regValue = string.Empty;
// 운영체제가 32bit인지 64bit인지 확인하여 registry 키 오픈
if (Environment.Is64BitOperatingSystem)
rk = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
else
rk = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
rk = rk.OpenSubKey(@"SOFTWARE\HelloRegistry", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.ReadKey);
// 키가 아예 존재하지 않을수도 있음. 그럴 경우 "NULL"값으로 반환하도록 처리
if (rk == null)
regValue = "NULL";
else
{
// 키는 존재하지만 값이 없을수도 있음. 그럴 경우도 "NULL"값으로 반환하도록 처리
regValue = rk.GetValue("testKey", "NULL").ToString();
// (기본키) 읽기
// regValue = rk.GetValue("", "NULL").ToString();
// 오픈한 키 닫기
rk.Close();
}
Registry를 읽을때도 마찬가지로 운영체제의 bit를 확인해서 해당하는 경로로 접근하도록 처리해줘야 합니다.
키 이름이 (기본값)인 곳에 값을 읽고 싶다면 키이름을 "" 으로 넣어주면 됩니다.
rk.GetValue("", "NULL");

'IT' 카테고리의 다른 글
| Linux grep 명령어 And, Or, Not 조건 사용 (0) | 2024.03.07 |
|---|---|
| 웹브라우저에서 프로그램 실행하기 (1) | 2024.03.06 |
| Apple, 강력한 M3 칩을 탑재한 새로운 MacBook Air 13 및 15 공개 (0) | 2024.03.05 |
| Linux 서버 상태 확인하기 (0) | 2024.03.04 |
| ElasticSearch Heap 메모리 설정 (0) | 2024.03.04 |
댓글