레지스트리 항목 작업Working with Registry Entries

레지스트리 항목은 키의 속성이어서 직접 검색할 수 없으므로 레지스트리 항목으로 작업할 경우 약간 다른 방법으로 접근해야 합니다.Because registry entries are properties of keys and, as such, cannot be directly browsed, we need to take a slightly different approach when working with them.

레지스트리 항목 나열Listing Registry Entries

다양한 방법으로 레지스트리 항목을 검사할 수 있습니다.There are many different ways to examine registry entries. 가장 간단한 방법은 속성 이름을 키와 연결하는 것입니다.The simplest way is to get the property names associated with a key. 예를 들어 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion 레지스트리 키에 있는 항목의 이름을 표시하려면 Get-Item을 사용합니다.For example, to see the names of the entries in the registry key HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion, use Get-Item. 레지스트리 키에는 키에 있는 레지스트리 항목의 목록인 "Property" 제네릭 이름을 가진 속성이 있습니다.Registry keys have a property with the generic name of "Property" that is a list of registry entries in the key. 다음 명령은 Property 속성을 선택하고 목록에 표시되도록 항목을 확장합니다.The following command selects the Property property and expands the items so that they are displayed in a list:

PS> Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion | Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId

레지스트리 항목을 읽기 쉽게 표시하려면 Get-ItemProperty를 사용합니다.To view the registry entries in a more readable form, use Get-ItemProperty:

PS> Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

PSPath              : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows\CurrentVersion
PSParentPath        : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows
PSChildName         : CurrentVersion
PSDrive             : HKLM
PSProvider          : Microsoft.PowerShell.Core\Registry
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
CommonFilesDir      : C:\Program Files\Common Files
ProductId           : 76487-338-1167776-22465
WallPaperDir        : C:\WINDOWS\Web\Wallpaper
MediaPath           : C:\WINDOWS\Media
ProgramFilesPath    : C:\Program Files
PF_AccessoriesName  : Accessories
(default)           :

키의 Windows PowerShell 관련 속성은 모두 "PS" 접두사가 붙어 있습니다(예: PSPath, PSParentPath, PSChildNamePSProvider).The Windows PowerShell-related properties for the key are all prefixed with "PS", such as PSPath, PSParentPath, PSChildName, and PSProvider.

"." 표기법을 사용하여 현재 위치를 나타낼 수 있습니다.You can use the "." notation for referring to the current location. 먼저 Set-Location을 사용하여 CurrentVersion 레지스트리 컨테이너로 변경할 수 있습니다.You can use Set-Location to change to the CurrentVersion registry container first:

Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

또는 기본 제공 HKLM PSDrive를 Set-Location과 함께 사용할 수 있습니다.Alternatively, you can use the built-in HKLM PSDrive with Set-Location:

Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion

그런 다음 현재 위치에 "." 표기법을 사용하여 전체 경로를 지정하지 않고 속성을 나열할 수 있습니다.You can then use the "." notation for the current location to list the properties without specifying a full path:

PS> Get-ItemProperty -Path .
...
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
...

경로 확장은 파일 시스템에서와 동일하게 작동하므로 이 위치에서 Get-ItemProperty -Path ..\Help를 사용하여 HKLM:\SOFTWARE\Microsoft\Windows\Help에 대한 ItemProperty 목록을 가져올 수 있습니다.Path expansion works the same as it does within the file system, so from this location you can get the ItemProperty listing for HKLM:\SOFTWARE\Microsoft\Windows\Help by using Get-ItemProperty -Path ..\Help.

단일 레지스트리 항목 가져오기Getting a Single Registry Entry

레지스트리 키에서 특정 항목을 검색하려면 여러 가지 방법 중 하나를 사용할 수 있습니다.If you want to retrieve a specific entry in a registry key, you can use one of several possible approaches. 이 예제에서는 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion에서 DevicePath 값을 찾습니다.This example finds the value of DevicePath in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.

Get-ItemProperty에서 Path 매개 변수를 사용하여 키의 이름을 지정하고, Name 매개 변수를 사용하여 DevicePath 항목의 이름을 지정합니다.Using Get-ItemProperty, use the Path parameter to specify the name of the key, and the Name parameter to specify the name of the DevicePath entry.

PS> Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath

PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\
               Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\
               Microsoft\Windows
PSChildName  : CurrentVersion
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry
DevicePath   : C:\WINDOWS\inf

이 명령은 표준 Windows PowerShell 속성과 DevicePath 속성을 반환합니다.This command returns the standard Windows PowerShell properties as well as the DevicePath property.

참고

Get-ItemProperty에는 Filter, IncludeExclude 매개 변수가 있지만 속성 이름을 필터링하는 데 사용할 수 없습니다.Although Get-ItemProperty has Filter, Include, and Exclude parameters, they cannot be used to filter by property name. 이러한 매개 변수를 레지스트리 키(항목 경로)라고 하며 레지스트리 항목(항목 속성)이 아닙니다.These parameters refer to registry keys—which are item paths—and not registry entries—which are item properties.

다른 옵션으로 Reg.exe 명령줄 도구를 사용합니다.Another option is to use the Reg.exe command line tool. reg.exe에 대한 도움말을 보려면 명령 프롬프트에서 reg.exe /? 를 입력합니다.For help with reg.exe, type reg.exe /? .at a command prompt. DevicePath 항목을 찾으려면 다음 명령에 표시된 대로 reg.exe를 사용합니다.To find the DevicePath entry, use reg.exe as shown in the following command:

PS> reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
    DevicePath  REG_EXPAND_SZ   %SystemRoot%\inf

WshShell COM 개체를 사용하여 일부 레지스트리 항목을 찾을 수도 있습니다. 이 방법은 대규모 이진 데이터나 "\"와 같은 문자를 포함하는 레지스트리 항목 이름에는 사용할 수 없습니다.You can also use the WshShell COM object as well to find some registry entries, although this method does not work with large binary data or with registry entry names that include characters such as "\"). \ 구분 기호를 사용하여 속성 이름을 항목 경로에 추가합니다.Append the property name to the item path with a \ separator:

PS> (New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf

새 레지스트리 항목 만들기Creating New Registry Entries

"PowerShellPath"라는 새 항목을 CurrentVersion 키에 추가하려면 키 경로, 항목 이름, 항목 값과 함께 New-ItemProperty를 사용합니다.To add a new entry named "PowerShellPath" to the CurrentVersion key, use New-ItemProperty with the path to the key, the entry name, and the value of the entry. 이 예제에서는 Windows PowerShell의 설치 디렉터리 경로를 저장하는 Windows PowerShell 변수 값 $PSHome을 사용합니다.For this example, we will take the value of the Windows PowerShell variable $PSHome, which stores the path to the installation directory for Windows PowerShell.

다음 명령을 사용하여 새 항목을 키에 추가할 수 있습니다. 이 명령은 새 항목에 대한 정보도 반환합니다.You can add the new entry to the key by using the following command, and the command also returns information about the new entry:

PS> New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome

PSPath         : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR
                 E\Microsoft\Windows\CurrentVersion
PSParentPath   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR
                 E\Microsoft\Windows
PSChildName    : CurrentVersion
PSDrive        : HKLM
PSProvider     : Microsoft.PowerShell.Core\Registry
PowerShellPath : C:\Program Files\Windows PowerShell\v1.0

PropertyType은 다음 표에서 Microsoft.Win32.RegistryValueKind 열거형 멤버의 이름이어야 합니다.The PropertyType must be the name of a Microsoft.Win32.RegistryValueKind enumeration member from the following table:

PropertyType 값PropertyType Value 의미Meaning
이진Binary 이진 데이터Binary data
DwordDWord 유효한 UInt32 숫자A number that is a valid UInt32
ExpandStringExpandString 동적으로 확장되는 환경 변수를 포함할 수 있는 문자열A string that can contain environment variables that are dynamically expanded
MultiStringMultiString 다중 행 문자열A multiline string
문자열String 임의의 문자열 값Any string value
QwordQWord 8바이트 이진 데이터8 bytes of binary data

참고

Path 매개 변수에 대한 값의 배열을 지정하여 여러 위치에 레지스트리 항목을 추가할 수 있습니다.You can add a registry entry to multiple locations by specifying an array of values for the Path parameter:

New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion, HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome

Force 매개 변수를 New-ItemProperty 명령에 추가하여 기존 레지스트리 항목 값을 덮어쓸 수도 있습니다.You can also overwrite a pre-existing registry entry value by adding the Force parameter to any New-ItemProperty command.

레지스트리 항목 이름 바꾸기Renaming Registry Entries

PowerShellPath 항목의 이름을 "PSHome"으로 바꾸려면 Rename-ItemProperty를 사용합니다.To rename the PowerShellPath entry to "PSHome," use Rename-ItemProperty:

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome

이름을 바꾼 값을 표시하려면 PassThru 매개 변수를 명령에 추가합니다.To display the renamed value, add the PassThru parameter to the command.

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru

레지스트리 항목 삭제Deleting Registry Entries

PSHome 및 PowerShellPath 레지스트리 항목을 모두 삭제하려면 Remove-ItemProperty를 사용합니다.To delete both the PSHome and PowerShellPath registry entries, use Remove-ItemProperty:

Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath