티스토리 뷰

목차

    반응형

    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

    반응형