1. 개요 – PowerShell | 레지스트리 다루기. 만들기, 읽기, 수정, 삭제. (CRUD) 하기
Windows 운영체제에서 레지스트리(Registry)는 Windows 시스템에서 매우 중요한 역할을 합니다. 프로그램 설정, 시스템 환경, 사용자 환경 등을 저장하는 데 사용되며, 이러한 레지스트리를 효과적으로 관리하는 것은 시스템 관리자와 개발자에게 필수입니다.
본 포스팅에서는 PowerShell을 사용하여 Windows 레지스트리를 다루는 방법을 알아봅니다. CRUD (Create, Read, Update, Delete) 방식을 따라, 레지스트리를 만들고, 읽고, 수정하고, 삭제하는 다양한 방법들을 실제 예제와 함께 알아보겠습니다.
2. PowerShell 로 레지스트리 만들기(Create)
레지스트리는 키, Key(폴더) 내부에 만듭니다. 따라서 레지스트리 키를 먼저 만들어보겠습니다. 그리고 레지스트리를 만들어보겠습니다. 레지스트리의 타입 역시 간단히 알아보겠습니다.
레지스트리 키(폴더) 생성하기(New-Item)
레지스트리 키를 생성하기 위해서는 ‘New-Item‘ 이라는 cmdlet 을 사용합니다. “HKCU:\Wednesday1304\KeyName01” 이라는 레지스트리 키를 생성해보겠습니다.
New-Item -Path "HKCU:\Wednesday1304\KeyName01"
레지스트리 생성하기(New-ItemProperty)
레지스트리 키를 만든 후에, ‘New-ItemProperty‘ cmdlet 을 사용하여, 레지스트리를 만듭니다.
# String 만들기
New-ItemProperty -Path "HKCU:\Wednesday1304\KeyName01" -Name "Reg_String" -Value "wednesday1304.com" -PropertyType String
# MultiString 만들기
New-ItemProperty -Path "HKCU:\Wednesday1304\KeyName01" -Name "Reg_MultiString" -Value "1,2,3" -PropertyType MultiString
# ExpandString
New-ItemProperty -Path "HKCU:\Wednesday1304\KeyName01" -Name "Reg_ExpandSZ" -Value "EXPAND_STRING" -PropertyType ExpandString
# Binary 만들기
New-ItemProperty -Path "HKCU:\Wednesday1304\KeyName01" -Name "Reg_Binary" -Value "1" -PropertyType Binary
# DWORD 만들기
New-ItemProperty -Path "HKCU:\Wednesday1304\KeyName01" -Name "Reg_DWORD" -Value 1 -PropertyType DWORD
# QWORD 만들기
New-ItemProperty -Path "HKCU:\Wednesday1304\KeyName01" -Name "Reg_QWORD" -Value 5 -PropertyType QWORD
레지스트리 타입은 아래 표와 같이 있습니다.
타입 | 명령어 입력(PropertyType) | 설명 |
---|---|---|
REG_SZ | String | null 로 끝나는 문자열 |
REG_EXPAND_SZ | ExpandString | 환경변수에 대한 확장되지 않은 참조 |
REG_MULTI_SZ | MultiString | null 로 끝나는 문자열 시퀀스 |
REG_BINARY | Binary | Binary 데이터 |
REG_DWORD | DWORD | 32비트 숫자 |
REG_QWORD | QWORD | 64비트 숫자 |
3. PowerShell 로 레지스트리 읽기(Read)
레지스트리 키 읽기와 레지스트리 값 읽기를 해보겠습니다. 각각 ‘Get-Item‘과 ‘Get-ItemProperty‘ cmdlet 을 사용합니다.
레지스트리 키, 키 내부 읽기(Get-Item)
Get-Item -Path "HKCU:\Wednesday1304\KeyName01"
해당 경로에 있는 레지스트리 키와 레지스트리를 불러오는 cmdlet 입니다.
레지스트리 값 읽기(Get-ItemProperty)
Get-ItemProperty -Path "HKCU:\Wednesday1304\KeyName01" -Name "reg_string"
해당 경로에 있는 ‘reg_string‘의 값을 불러오는 cmdlet 입니다.
4. PowerShell 로 레지스트리 수정하기(Update)
레지스트리 이름을 변경하는 방법, 레지스트리 값을 변경하는 방법과, 레지스트리 타입을 변경하는 방법을 알아보겠습니다. 각각 ‘Rename-ItemProperty‘, ‘Set-ItemProperty‘, 그리고 ‘Set-ItemProperty‘를 사용합니다.
레지스트리 이름 변경하기(Rename-ItemProperty)
Rename-ItemProperty -path "HKCU:\Wednesday1304\KeyName01\" -Name "Reg_MultiString" -NewName "Reg_ms001"
‘Reg_MultiString‘ 이란 이름의 레지스트리를 ‘Reg_ms001‘로 변경하는 cmdlet 입니다.
레지스트리 값 변경하기(Set-ItemProperty)
Set-ItemProperty -Path "HKCU:\Wednesday1304\KeyName01" -Name "Reg_String" -Value "새로운 데이터01"
‘Reg_String‘ 의 값을 ‘새로운 데이터01‘로 변경하는 cmdlet 입니다.
레지스트리 타입 변경하기(Set-ItemProperty)
Set-ItemProperty -Path "HKCU:\Wednesday1304\KeyName01" -Name "Reg_DWORD" -Value 100 -PropertyType String
‘Reg_DWORD‘의 타입을 String (REG_SZ)로 변경하는 cmdlet 입니다.
5. PowerShell 로 레지스트리 삭제하기(Delete)
레지스트리 키를 삭제하는 방법(Remove-Item)과 레지스트리를 삭제하는 방법(Remove-ItemProperty)을 알아보겠습니다.
- 레지스트리를 삭제하는 경우, 복구가 거의 불가능하므로 주의가 필요합니다!
레지스트리 키 삭제하기(Remove-Item)
Remove-Item -Path "HKCU:\Wednesday1304\KeyName01"
해당 경로(“HKCU:\Wednesday1304\KeyName01“) 인 레지스트리 키를 삭제하는 cmdlet 입니다.
레지스트리 삭제하기(Remove-ItemProperty)
Remove-ItemProperty -Path "HKCU:\Wednesday1304\KeyName01\" -Name "Reg_string"
‘Reg_string‘ 이란 이름의 레지스트리를 삭제하는 cmdlet 입니다.
6. 결론
여기까지 PowerShell 로 레지스트리를 다루기(생성, 읽기, 수정, 삭제) CRUD(Create, Read, Update, Delete) 작업을 알아보았습니다. 필요한 곳에 적절히 사용하시길 바랍니다.
!@#끝!@#
(출처 및 참고자료)
- Microsoft | Registry value types – https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry-value-types
- Microsoft | New-Item – https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-item?view=powershell-7.4
- Microsoft | New-ItemProperty – https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/move-itemproperty?view=powershell-7.4
- Microsoft | Get-Item – https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-item?view=powershell-7.4
- Microsoft | Get-ItemProperty – https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-itemproperty?view=powershell-7.4
- Microsoft | Rename-ItemProperty – https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/rename-itemproperty?view=powershell-7.4
- Microsoft | Set-ItemProperty – https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-itemproperty?view=powershell-7.4
- Microsoft | Remove-Item – https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-item?view=powershell-7.4
- Microsoft | Remove-ItemProperty – https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-itemproperty?view=powershell-7.4
- Microsoft | Working with registry entries – https://learn.microsoft.com/en-us/powershell/scripting/samples/working-with-registry-entries?view=powershell-7.4
One thought on “PowerShell | 레지스트리 다루기. 만들기, 읽기, 수정, 삭제. (CRUD) 하기”