파이썬은 범용 프로그래밍 언어일 뿐만 아니라, 방대한 사용자 지원 모듈 생태계를 갖추고 있어 운영체제(OS) 수준의 프로그래밍에서도 탁월한 활용성을 보여줍니다. 이 글에서는 파이썬을 활용해 Windows 운영체제의 레지스트리(Registry)에 접근하는 방법을 단계별로 살펴보겠습니다.
Windows 레지스트리에 접근하려면 파이썬 환경에 winreg 모듈을 임포트해야 합니다. winreg는 Windows 전용으로 제공되는 내장 모듈이므로 별도의 설치 과정 없이 바로 사용할 수 있습니다.
레지스트리 접근 기본 흐름
아래 예제에서는 winreg 모듈을 사용해 다음과 같은 순서로 레지스트리에 접근합니다.
- ConnectRegistry 함수로 레지스트리에 연결합니다.
- OpenKey 함수로 원하는 특정 키를 열어 접근합니다.
- for 반복문을 통해 접근한 하위 키들의 목록을 출력합니다.
예제 코드
import winreg
# 레지스트리 키에 연결
access_registry = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
access_key = winreg.OpenKey(access_registry, r"SOFTWARE\Microsoft\Windows\CurrentVersion")
# 열린 키 아래의 레지스트리 디렉터리에 접근
for n in range(20):
try:
x = winreg.EnumKey(access_key, n)
print(x)
except:
break
주요 함수 설명
- winreg.ConnectRegistry(computer_name, key): 지정한 컴퓨터의 레지스트리에 연결합니다. computer_name 자리에
None을 전달하면 로컬 컴퓨터에 연결됩니다. - winreg.HKEY_LOCAL_MACHINE: 시스템 전체 설정과 모든 사용자에게 적용되는 구성 정보를 담고 있는 최상위 레지스트리 키입니다.
- winreg.OpenKey(key, sub_key): 지정된 경로의 키를 열고 해당 키에 대한 핸들(handle)을 반환합니다.
- winreg.EnumKey(key, index): 열려 있는 키의 하위 키 이름을 인덱스 순서대로 하나씩 반환합니다. 더 이상 조회할 하위 키가 없으면
OSError가 발생하며, 위 예제에서는 이 예외를 활용해 반복문을 종료합니다.
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
ApplicationFrame AppModel Appx Audio Authentication AutoRotation BITS Casting ClosedCaptioning CloudExperienceHost Component Based Servicing …….. …..
이처럼 파이썬의 winreg 모듈을 활용하면 몇 줄의 코드만으로 Windows 레지스트리에 안전하게 접근하고, 시스템 구성 정보를 읽거나 관리할 수 있습니다.