본문 바로가기
운영체제 (LNX,WIN)

명령 프롬프트에서 레지스트리 조작

by 날으는물고기 2010. 7. 20.

명령 프롬프트에서 레지스트리 조작

레지스트리를 조작하기 위해서는 일반적으로는 GUI 기반의 도구인 [regedit.exe]나 [regedt32.exe]를 사용하는 경우가 많다. 하지만 몇번이나 같은 처리를 실행하는 경우나, 다수의 컴퓨터에(원격으로) 같은 설정을 한다면 명령 프롬프트를 사용하는 것이 편리할 것이다.

조작 방법
명령 프롬프트에서 레지스트리를 조작하기 위한 명령어는 [reg.exe]이다. Windows 2000에서는 지원 도구로 준비되어 있으므로 미리 사용자가 인스톨 해 둘 필요가 있다. 지원 도구란 Windows 2000의 인스톨 CD-ROM의 \SUPPORT\TOOLS 폴더에 준비되어 있는 도구들을 말한다. 이 안에 있는 SETUP.EXE를 실행하면 인스톨 된다. Windows XP와 Windows Server 2003에는 기본 명령어로 미리 준비되어 있으므로, 곧바로 사용할 수 있다.

reg의 하위 명령어
reg 명령어에는 몇개의 하위 명령어 있어, 예를 들면 레지스트리 항목을 추가한다면 [reg add 파라미터]라는 식으로 이용한다. reg 명령어에서 이용할 수 있는 하위 명령어는 다음과 같다.

 명령어
 의미  원격
reg query 지정한 레지스트리 키나 그 하위 트리의 값을 표시한다  가능
reg add 레지스트리에 키나 값이름, 값을 추가하거나, 기존의 값을 수정한다  가능
reg delete 레지스트리에서 지정한 키나 값을 삭제한다
 가능
reg copy 레지스트리의 트리를 복사한다. 로컬 컴퓨터의 레지스트리 뿐만이 아니라, 2개의 컴퓨터간에도 원격 복사가 가능하다  가능
reg compare 지정한 2군데의 레지스트리(트리)를 비교해서 그 차이점 혹은 같은 부분을 표시한다  가능
reg save 레지스트리 트리의 저장. 지정한 하위 키 이하의 트리를 지정된 파일에 저장한다. 저장한 파일은 다음에 나오는 [reg restore] 에서만 이용 가능하다. 원격 컴퓨터의 레지스트리를 지정하면 그 컴퓨터의 지정된 폴더(디폴트는 %SYSTEM_ROOT%)에 파일이 저장된다  가능
reg restore [reg save]로 저장한 레지스트리를 로컬 컴퓨터의 지정한 트리에 복원한다. 원격 컴퓨터의 레지스트리를 [reg save] 했다면 그 컴퓨터에 로그온 해서 [reg restore] 해야 한다
 불가
reg load [reg save]로 저장한 레지스트리를 원래와는 다른 장소에 로드/복원한다  불가
reg unload [reg load] 로 읽어들였던 레지스트리의 섹션을 삭제한다  불가
reg export 지정된 키나 항목(과 그 값)을  파일에 쓴다. GUI판의 레지스트리 에디터로 레지스트리를 썼을 때 작성되는 파일(~.reg)과 같은 형식으로 저장된다  불가
reg import [reg export]로 쓴 레지스트리 값을 로컬 컴퓨터에 다시 불러온다. 탐색기에서 ∼.reg 파일을 더블클릭 했을 때와 같은 동작을 한다  불가

reg 명령어의 하위 명령어와 그 기능
reg 명령어는 다양한 하위 명령어가 있다. reg 명령어의 사용법은 [reg /?]를 실행하면 표시된다. [reg add /?]라고 하위 명령어에 이어서 [/?]를 지정하면 하위 명령어에 해당하는 자세한 사용법이 표시된다. [원격] 란은 원격 컴퓨터의 레지스트리를 조작할 수 있는지 어떤지를 나타내고 있다. [가능]이라고 되어 있는 경우는 레지스트리의 키이름 앞에 컴퓨터 이름을 지정하면 된다.
reg 명령어의 사용법은 지원 도구의 도움말 파일(Windows 2000의 경우)이나 [도움말 지원 센터(Windows XP/Windows Server 2003의 경우)]를 참조하면 되지만, 보통은 명령 프롬프트에서 [reg /?]라고 표시하는 것이 간단해서 좋을 것이다. 각 하위 명령어에 대해서는, 예를 들면 [reg add /?] 등이라고 하면 사용법이나 샘플이 표시된다.

레지스트리 키의 지정 방법
reg 명령어를 이용할 경우는 그 파라미터로서 레지스트리 키를 지정할 필요가 있다. 레지스트리에는 목적에 따라 몇개의 루트 키가 존재한다. 예를 들면 시스템 전체와 관계되는 설정은 [HKEY_LOCAL_MACHINE\SOFTWARE], 사용자마다의 설정은 [HKEY_USERS] 등이다. 하지만 이것들은 매우 길기 때문에 아래와 같이 간략화한 형식도 이용할 수도 있다.

 간략화한 키이름
 정식 키이름
 원격
HKLM HKEY_LOCAL_MACHINE 이용 가능
HKCU HKEY_CURRENT_USER
이용 불가능
HKCR HKEY_CLASSES_ROOT 이용 불가능
HKU HKEY_USERS 이용 가능
HKCC HKEY_CURRENT_CONFIG 이용 불가능

이 간략화형을 사용하면 예를 들면 [HKEY_LOCAL_MACHINE\Software\Microsoft]는 [HKLM\Software\Microsoft]라고 짧게 쓸수 있다.
원격 컴퓨터의 레지스트리를 지정하는 경우는 키의 앞부분에 [\\컴퓨터명\]을 붙이면 된다. 예를 들면 [\\server1\HKLM\Software\Microsoft]라고 지정한다. 다만, 원격에서 레지스트리를 조작하는 경우는 [CURRENT_USER(현재 로그온 하고 있는 사용자)]라는 개념이 없기 때문에 HKLM과 HKU만 이용할 수 있다. 원격에서 레지스트리에 접속하기 위해서는 원격 컴퓨터에 대한 관리자 권한을 가지고 있어야 한다.

레지스트리 조작의 예
여기에서는 예로서 자동 로그온 설정을 원격 컴퓨터에 실시해 보자.

 레지스트리 값이름  타입  의미
DefaultDomainName REG_SZ 자동 로그온할 도메인명. 도메인이 아니라 로컬 컴퓨터 계정에 로그온 하는 경우는 컴퓨터이름을 지정
DefaultUserName REG_SZ 자동 로그온할 사용자명
DefaultPassword REG_SZ 자동 로그온할 사용자 암호
AutoAdminLogon REG_SZ 1

자동 로그온을 위한 설정: HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon 아래에 위와 같은 값을 작성하면 시스템 시작과 동시에 자동으로 로그온 한다.

이 설정을 실시하기 위해서는 아래와 같은 명령어를 실행한다. 여기에서는 로그온 하는 컴퓨터명은 server1, 사용자명은 user01, 암호는 password01로 하고 있다. 키이름 등에 공백이 포함되어 있는 경우는 더블쿼터 기호로 둘러싸는 것을 잊지 말아야 한다.

※ setup-autologon.bat 파일의 예

rem setup-autologon.bat

net use \\server1\ipc$ /user:user01 *
reg add "\\server1\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName /t REG_SZ /d "SERVER1" /f
reg add "\\server1\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName   /t REG_SZ /d "user01" /f
reg add "\\server1\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword   /t REG_SZ /d "password01" /f
reg add "\\server1\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon    /t REG_SZ /d "1" /f
net use \\server1\ipc$ /delete

최초와 마지막에 있는 [net use \\server1\ipc$ ~]와 [net use ~ /delete]는 대상이 되는 서버의 접속과 절단을 하기 위한 것이다. 이렇게  공유 지정을 명시적으로 하는 것으로 현재 로그온 하고 있는 사용자 계정과 관계없이 대상이 되는 컴퓨터에 임의 계정으로 공유를 위해서 로그온 할 수 있다 (필요없다면 생략해도 된다)
중간쯤에 있는 [reg add "\\server1\HKLM~" /v ~ /t ~ /d ~ /f]가 실제로 레지스트리 값을 지정하기 위한 명령어이다. 도중에 공백 문자가 들어가 있는 경우에는 파라미터를 ["~"]와 같이 더블쿼터 기호로 둘러싸는 것이 좋다. 또 문자열형(REG_SZ_~)의 값도 더블쿼터 기호로 둘러싸는 것이 좋을 것이다. 여기에서는 문자열만 사용하고 있지만, REG_DWORD의 경우는 값을 10진수나 16진수로 지정한다(16진수의 경우는 앞부분에 0x를 붙여 0x1234abcd와 같이 한다)
파라미터의 마지막에 있는 [/f]는 덮어쓰기를 위한 지정이다. 같은 키나 값을 변경하는 경우에 이 옵션이 없으면 덮어쓰기 해도 괜찮은지 어떤지 묻게 된다.

설정한 값을 확인하려면, 예를 들면 아래와 같이 하면 된다. 이것은 Winlogon 키 이하에 있는 값을 모두 표시 시키는 명령어이다.

reg query "\\server1\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /s

이와 같이 reg 명령어를 사용하면 레지스트리의 설정 작업을 간단하게 실시할 수 있다.

출처 : http://nacarat.tistory.com
728x90

댓글