본문 바로가기
C++ 200제/코딩 IT 정보

C# 레지스트리 유무 - 없으면 생성하기(RegistryKey CreateSubKey)

by vicddory 2019. 10. 7.
반응형

C# 레지스트리 다루는 클래스는 RegistryKey입니다.

만약, 레지스트리 유무를 확인했는데, 키 자체가 없다면 아래처럼 오류가 발생합니다.



실행 중 오류가 발생했습니다.

내용 : 레지스트리 키 이름은 올바른 기본 키 이름으로 시작해야 합니다.


윈도우 목록에서 GetValue 했을 때 키 가 없으면 발생하는 에러죠.


반드시 존재해야 하는 레지스트리 값이라면 아래처럼 try catch를 활용하면 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const string REGKEY_SOFTWARE = "HKEY_LOCAL_MACHINE\\SOFTWARE\\NAME\\VALUE";
 
public static void SetValue(RegKey key, string valueName, object value)
{
    RegistryKey openRegKey;
 
    try
    {
        Registry.SetValue(REGKEY_SOFTWARE, valueName, value);
    }
    catch (Exception e)
    {
        openRegKey = Registry.LocalMachine.CreateSubKey(REGKEY_SOFTWARE);
        openRegKey.SetValue(valueName, value);
        openRegKey.Close();
    }
}
cs


9번 라인 SetValue에서 예외가 발생하면, 13~15번 라인처럼 목록 조회 실패한 Registry 키를 생성합니다.


간단한 C# 소스입니다.


C# RegistryKey 예외 발생하면 CreateSubKey로 생성함C# RegistryKey 예외 발생하면 CreateSubKey로 생성함


예제 함수를 이용하면 위와 같은 예제 화면은 안 볼 수 있습니다.


글씨가 작아서 잘 안 보이는데, 3번째 줄을 보면, 레지스트리 유무 조회 실패라는 뜻입니다.


C# 관련 글

C# Registry GetValue() 32 64비트 예제 - NULL만 반환할 때

C# Windows 레지스트리 액세스 방법 - Registry 예제

C# 오류 - SignTool Error: No certificates were found that met all the given criteria

반응형