본문 바로가기
VB.net

레지스트리에 데이터를 기록 삭제하는 메서드

by 호야호잇 2018. 5. 24.

#######################################################################

예시는 윈도우 잠금화면 변경을 하기 위해 레지 생성 및 삭제 로직임

#######################################################################


Imports Microsoft.Win32

Imports System.IO


Public Class Form1


    '레지스트리에 데이터를 기록하는 메서드

    Public Function WriteRegKey(ByVal KeyString As String, ByVal KeyName As String, ByVal KeyValue As Object) As Boolean

        Try

            Registry.LocalMachine.CreateSubKey(KeyString).SetValue(KeyName, KeyValue)

            Registry.LocalMachine.Close()

            Return True

        Catch

            Return False

        End Try

    End Function




    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


        ' ------------------------------------------------------------------  레지 관련 -------------------------------------------------------------------------

        Dim BG_img_reg_path As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background"


        ''====   레지스트리에 윈도우 잠금화면 적용을 위한 Key값 생성 Logic  =====

        'WriteRegKey(BG_img_reg_path, "OEMBackground", 1)

        ''===================================================


        '===== 레지스트리에 윈도우 잠금화면 Default로 돌리기위해 레지스트리 삭제 Logic ====================================

        Dim FoundKey As RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey(BG_img_reg_path, True)  '레지스트리 쓰기를 허용한다


        '레지스트리가 해당경로에 있을경우 OEMBackGround 값을 삭제 한다

        If Not (FoundKey Is Nothing) Then

            FoundKey.DeleteValue("OEMBackground")

        End If

        '===========================================================================================




        ' ------------------------------------------------------------------  파일 관련 -------------------------------------------------------------------------

        ' ★★★★★★★★★★ 중요 ★★★★★★★★★★★★★★

        '      첨부되는 그림 파일은  200KB를 초과하면 안된다.

        '★★★★★★★★★★★★★★★★★★★★★★★★★★★


        Dim BG_File_Path As String = "c:\Windows\System32\oobe\info\backgrounds\" '적용하려는 이미지가 저장되어야 할 경로

        Dim 파일명 As String = "backgroundDefault.jpg"  '파일명은 고정값임(변경 시 동작하지 않음)

        Dim Source_File As String = Application.StartupPath & "\" & 파일명


        If Directory.Exists(BG_File_Path) = True Then

            My.Computer.FileSystem.CopyFile(Source_File, BG_File_Path & "\" & 파일명, overwrite:=True)  '동일한 파일이 있는경우 덮어씌우기

        Else

            My.Computer.FileSystem.CreateDirectory(BG_File_Path)  '폴더가 없는경우 폴더 생성

            My.Computer.FileSystem.CopyFile(Source_File, BG_File_Path & "\" & 파일명, overwrite:=True)  '동일한 파일이 있는경우 덮어씌우기

        End If


        '---------------------------------------------------------------------------------------------------------------------------------------------------------

    End Sub



End Class