티스토리 뷰
목차
반응형
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로 생성함
예제 함수를 이용하면 위와 같은 예제 화면은 안 볼 수 있습니다.
글씨가 작아서 잘 안 보이는데, 3번째 줄을 보면, 레지스트리 유무 조회 실패라는 뜻입니다.
C# 관련 글
C# Registry GetValue() 32 64비트 예제 - NULL만 반환할 때
C# Windows 레지스트리 액세스 방법 - Registry 예제
C# 오류 - SignTool Error: No certificates were found that met all the given criteria
반응형