반응형

* 윈도우 레지스트리에 읽고 쓰고 만들고 지우기 예제

 

메인 화면

 

Form1.vb

 

Imports Microsoft.Win32

Public Class Form1

    Dim strAppName As String = "RegistryTest"

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '쓰기
        WriteRegistry(strAppName, "Test1", "iii", "asdfasdf000")
        WriteRegistry(strAppName, "Test2", "iii", "asdfasdf111")
        WriteRegistry(strAppName, "Test3", "iii", "asdfasdf222")
        WriteRegistry(strAppName, "Test4", "iii", "asdfasdf333")

        '읽기
        'MessageBox.Show(ReadRegistry(strAppName,"Test1","iii"))

        '삭제
        'DeleteReg(strAppName)

        '등록된 목록 읽기
        Dim rk As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\" + strAppName)
        Dim str() As String = rk.GetSubKeyNames()

        For iCount As Integer = 0 To str.Length - 1
            ListBox1.Items.Add(str(iCount))
        Next

    End Sub

    '레지스트리도 폴더 개념으로 접근...
#Region " RegisTry Create & Read & Write & Delete..."

    Private Function DeleteReg(ByVal strSubKey As String) As Boolean
        Dim rk As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\", True)
        Try
            '하위 폴더(레지스트리)가 있으면 삭제 안됨.
            'if(Not rk Is Nothing) Then rkDeleteSubKey(strSubKey)

            '하위 폴더(레지스트리) 가 있던 없던 걍 삭제...
            If Not rk Is Nothing Then
                rk.DeleteSubKeyTree(strSubKey)
            End If
        Catch ex As Exception
            Return False
        End Try
        Return True
    End Function

    '레지스트리 쓰기
    Private Function WriteRegistry(ByVal strAppName As String, ByVal strSubKey As String, ByVal strKey As String, ByVal strValue As String) As Boolean

        Dim rkReg As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\" + strAppName, True)
        'null 이면 폴더(레지스트리)가 없으므로 만듬...
        If rkReg Is Nothing Then
            rkReg = Registry.CurrentUser.CreateSubKey("SOFTWARE\" + strAppName)
        End If

        'OpenSubKey (하위폴더(레지스트리 이름) , 쓰기 선택 True 쓰기 False 및 인자가 없다면 읽기)
        Dim rkSub As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\" + strAppName + "\\" + strSubKey, True)
        If rkSub Is Nothing Then
            rkSub = Registry.CurrentUser.CreateSubKey("SOFTWARE\" + strAppName + "\\" + strSubKey)
        End If

        Try
            rkSub.SetValue(strKey, strValue)
        Catch ex As Exception
            Console.WriteLine(ex.Message.ToString())
            Return False
        End Try
        Return True
    End Function
    '레지스트리 읽기
    Private Function ReadRegistry(ByVal strAppName As String, ByVal strSubKey As String, ByVal strKey As String) As String
        Dim reg As RegistryKey

        Try
            reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\" + strAppName).OpenSubKey(strSubKey)
        Catch ex As Exception
            Return ""
        End Try

        Return reg.GetValue(strKey, "").ToString()
    End Function

#End Region

    
End Class

 

 

아래의 그림을 보면

HKEY_CUREENT_USER 가 트리뷰에서 보이게 됩니다.

 Registry.CurrentUser 는 저 레지스트리 폴더를 가르키게 되며

Registry.LocalMachine는 그 아래에 있는 HKEY_LOCAL_MACHINE 으로 들어가게 됩니다.

 

위 소스 Registry.CurrentUer.OpenSubKey("SOFTWARE") 는

레지스트리에 HKEY_CURRENT_USER => Software 폴더를 열겠다는 뜻

 

*레지스트리 편집기 (시작 -> 실행 -> regedit)

  

레지스트리 편집기 실행 

 

레지스트리 프로그램 실행 후 편집기 실행

Imports Microsoft.Win32

레지스트리 클래스를 사용하기 위해선 Microsoft.Win32 를 임포트 시켜 줘야 함.

반응형

+ Recent posts