Microsoft.Win32 네임스페이스를 사용하여 레지스트리 읽기 및 쓰기(Visual Basic)

My.Computer.Registry만으로도 레지스트리에 대한 기본적인 프로그래밍 작업을 수행할 수 있지만 .NET Framework의 Microsoft.Win32 네임스페이스에 있는 RegistryRegistryKey 클래스를 사용할 수도 있습니다.

Registry 클래스의 키

Registry 클래스는 하위 키 및 해당 값에 액세스하는 데 사용할 수 있는 기본 레지스트리 키를 제공합니다. 기본 키 자체는 읽기 전용입니다. 다음 표에서는 Registry 클래스에서 노출하는 7개의 키를 보여 줍니다.

설명

ClassesRoot

문서 형식과 해당 형식에 연결된 속성을 정의합니다.

CurrentConfig

사용자와 관련되지 않은 하드웨어 구성 정보를 포함합니다.

CurrentUser

환경 변수 등의 현재 사용자 기본 설정에 대한 정보를 포함합니다.

DynData

가상 장치 드라이버에서 사용하는 것과 같은 동적 레지스트리 데이터를 포함합니다.

LocalMachine

로컬 컴퓨터의 구성 데이터를 저장하는 5개의 하위 키(Hardware, SAM, Security, Software 및 System)를 포함합니다.

PerformanceData

소프트웨어 구성 요소의 성능 정보를 포함합니다.

Users

사용자 기본 설정의 기본값에 대한 정보를 포함합니다.

보안 정보보안 정보

데이터를 로컬 컴퓨터(LocalMachine)에 쓰는 것보다는 현재 사용자(CurrentUser)에 쓰는 것이 더 안전합니다. 사용자가 만들려고 하는 키를 악성일 수 있는 다른 프로세스에서 이미 만든 경우에는 대개 "스쿼팅(squatting)"이라고 하는 상황이 발생합니다. 스쿼팅이 발생하지 않도록 하려면 키가 아직 없을 경우 Nothing을 반환하는 GetValue 등의 메서드를 사용합니다.

레지스트리에서 값 읽기

다음 코드에서는 HKEY_CURRENT_USER에서 문자열을 읽는 방법을 보여 줍니다.

Dim regVersion As Microsoft.Win32.RegistryKey
Dim keyValue = "Software\\Microsoft\\TestApp\\1.0"
regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(keyValue, False)
Dim intVersion As Integer = 0
If regVersion IsNot Nothing Then
    intVersion = regVersion.GetValue("Version", 0)
    regVersion.Close()
End If

다음 코드에서는 값을 읽어서 늘린 다음 HKEY_CURRENT_USER에 문자열을 씁니다.

Dim regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
                  "SOFTWARE\\Microsoft\\TestApp\\1.0", True)
If regVersion Is Nothing Then
    ' Key doesn't exist; create it.
    regVersion = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(
                 "SOFTWARE\\Microsoft\\TestApp\\1.0")
End If

Dim intVersion As Integer = 0
If regVersion IsNot Nothing Then
    intVersion = regVersion.GetValue("Version", 0)
    intVersion = intVersion + 1
    regVersion.SetValue("Version", intVersion)
    regVersion.Close()
End If

참고 항목

작업

문제 해결: 레지스트리 조작(Visual Basic)

참조

SystemException

ApplicationException

RegistryProxy

개념

Visual Basic의 구조적 예외 처리 개요

일반적인 레지스트리 작업(Visual Basic)

보안 및 레지스트리(Visual Basic)

My를 사용하여 레지스트리 읽기 및 쓰기(Visual Basic)