반응형
* 윈도우 레지스트리에 읽고 쓰고 만들고 지우기 예제
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 를 임포트 시켜 줘야 함.
반응형
'VB.NET Programming' 카테고리의 다른 글
[VBNET] File Create Delete Read Write Ex (0) | 2019.09.27 |
---|---|
[VBNET] INIFile Create & Read & Write Example (0) | 2019.09.26 |
[VBNET] 객체 직렬화 및 파일로 저장, 불러오기( Serialization) (0) | 2019.09.20 |
[VBNET] BackGround Worker 를 이용 백그라운드 스레드 (0) | 2019.09.17 |
[VBNET] 크로스 스레드 (Cross Thread) 예제 (0) | 2019.09.16 |