winreg — Windows 레지스트리 접근
winreg — Windows 레지스트리 접근
이 모듈의 함수들은 Windows 레지스트리 API를 Python에 노출해요. 레지스트리 핸들로 정수를 사용하는 대신 핸들 객체가 사용되어, 프로그래머가 핸들을 명시적으로 닫는 것을 잊어도 핸들이 올바르게 닫히도록 보장해요.
가용성(Availability): Windows.
본문
함수 (Functions)
이 모듈은 다음 함수들을 제공해요:
- winreg.CloseKey(hkey) — 이전에 열린 레지스트리 키를 닫아요.
hkey가 이 메서드(또는hkey.Close())로 닫히지 않으면 Python이 hkey 객체를 파괴할 때 닫혀요. - winreg.ConnectRegistry(computer_name, key) — 다른 컴퓨터의 미리 정의된 레지스트리 핸들에 연결을 설정하고 핸들 객체를 반환해요.
computer_name은r"\\computername"형태의 원격 컴퓨터 이름이고, None이면 로컬 컴퓨터가 사용돼요. - winreg.CreateKey(key, sub_key) — 지정된 키를 만들거나 열어 핸들 객체를 반환해요.
key는 이미 열린 키 또는 미리 정의된HKEY_*상수 중 하나이고,sub_key는 열거나 만들 키의 이름을 지정하는 문자열이에요. 키가 이미 존재하면 기존 키를 열어요. - winreg.CreateKeyEx(key, sub_key, reserved=0, access=KEY_WRITE) — 지정된 키를 만들거나 열어 핸들 객체를 반환해요.
access는 키의 원하는 보안 접근을 설명하는 접근 마스크를 지정하는 정수예요. - winreg.DeleteKey(key, sub_key) — 지정된 키를 삭제해요. 하위 키가 있는 키는 삭제할 수 없어요.
- winreg.DeleteKeyEx(key, sub_key, access=KEY_WOW64_64KEY, reserved=0) — 지정된 키를 삭제해요. 지원되지 않는 Windows 버전에서는
NotImplementedError가 발생해요. - winreg.DeleteValue(key, value) — 레지스트리 키에서 명명된 값을 제거해요.
- winreg.EnumKey(key, index) — 열린 레지스트리 키의 하위 키를 열거하며 문자열을 반환해요. 값이 더 이상 없음을 나타내는
OSError예외가 발생할 때까지 반복 호출돼요. - winreg.EnumValue(key, index) — 열린 레지스트리 키의 값을 열거하며 튜플을 반환해요. 결과는 (값 이름을 식별하는 문자열, 값 데이터를 보유하는 객체, 값 데이터 타입을 식별하는 정수)의 3개 항목 튜플이에요.
- winreg.ExpandEnvironmentStrings(str) —
REG_EXPAND_SZ같은 문자열의 환경 변수 자리 표시자%NAME%를 확장해요. - winreg.FlushKey(key) — 키의 모든 특성을 레지스트리에 기록해요. 키를 변경하는 데
FlushKey()를 호출할 필요는 없어요. 레지스트리 변경은 lazy flusher로 디스크에 플러시돼요. - winreg.LoadKey(key, sub_key, file_name) — 지정된 키 아래에 하위 키를 만들고 지정된 파일의 등록 정보를 그 하위 키에 저장해요. 호출 프로세스에
SE_RESTORE_PRIVILEGE권한이 없으면 실패해요. - winreg.OpenKey(key, sub_key, reserved=0, access=KEY_READ) / winreg.OpenKeyEx(...) — 지정된 키를 열어 핸들 객체를 반환해요.
- winreg.QueryInfoKey(key) — 키에 대한 정보를 튜플로 반환해요. 결과는 (하위 키 수, 값 수, 마지막 수정 시각)의 3개 항목 튜플이에요.
- winreg.QueryValue(key, sub_key) — 키의 이름 없는 값을 문자열로 검색해요.
- winreg.QueryValueEx(key, value_name) — 열린 레지스트리 키와 연결된 지정된 값 이름에 대한 타입과 데이터를 검색해요. 결과는 (값, 레지스트리 타입)의 2개 항목 튜플이에요.
- winreg.SaveKey(key, file_name) — 지정된 키와 모든 하위 키를 지정된 파일에 저장해요. 호출자는
SeBackupPrivilege보안 권한을 가져야 해요. - winreg.SetValue(key, sub_key, type, value) — 지정된 키와 값을 연결해요. 현재
type은REG_SZ여야 해요(문자열만 지원). - winreg.SetValueEx(key, value_name, reserved, type, value) — 열린 레지스트리 키의 값 필드에 데이터를 저장해요.
type은Value Types를 참고해요. - winreg.DisableReflectionKey(key) — 64비트 운영 체제에서 실행되는 32비트 프로세스에 대한 레지스트리 리플렉션을 비활성화해요.
- winreg.EnableReflectionKey(key) — 지정된 비활성화된 키의 레지스트리 리플렉션을 복원해요.
- winreg.QueryReflectionKey(key) — 지정된 키의 리플렉션 상태를 결정해요. 리플렉션이 비활성화되었으면 True를 반환해요.
이 함수들은 Python 3.3부터 OSError의 별칭이 된 WindowsError를 더 이상 발생시키지 않는다는 변경이 있었어요.
상수 (Constants)
HKEY_* 상수
- winreg.HKEY_CLASSES_ROOT — 이 키의 하위 레지스트리 항목은 문서의 타입(또는 클래스)과 그 타입과 연결된 속성을 정의해요.
- winreg.HKEY_CURRENT_USER — 이 키의 하위 레지스트리 항목은 현재 사용자의 기본 설정을 정의해요.
- winreg.HKEY_LOCAL_MACHINE — 이 키의 하위 레지스트리 항목은 컴퓨터의 물리적 상태를 정의해요.
- winreg.HKEY_USERS — 이 키의 하위 레지스트리 항목은 새 사용자의 기본 사용자 구성과 현재 사용자의 구성을 정의해요.
- winreg.HKEY_PERFORMANCE_DATA — 이 키의 하위 레지스트리 항목은 성능 데이터 접근을 허용해요.
- winreg.HKEY_CURRENT_CONFIG — 로컬 컴퓨터 시스템의 현재 하드웨어 프로필에 대한 정보를 포함해요.
- winreg.HKEY_DYN_DATA — Windows 98 이후 버전에서는 사용되지 않는 키.
접근 권한 (Access Rights)
- winreg.KEY_ALL_ACCESS — 모든 접근 권한의 조합
- winreg.KEY_WRITE — 쓰기 권한 조합
- winreg.KEY_READ — 읽기 권한 조합
- winreg.KEY_EXECUTE —
KEY_READ와 동등 - winreg.KEY_QUERY_VALUE — 레지스트리 키의 값을 쿼리하는 데 필요
- winreg.KEY_SET_VALUE — 레지스트리 값을 생성, 삭제, 설정하는 데 필요
- winreg.KEY_CREATE_SUB_KEY — 레지스트리 키의 하위 키를 만드는 데 필요
- winreg.KEY_ENUMERATE_SUB_KEYS — 하위 키를 열거하는 데 필요
- winreg.KEY_NOTIFY — 변경 알림을 요청하는 데 필요
- winreg.KEY_CREATE_LINK — 시스템용으로 예약됨
64비트 전용 (64-bit Specific)
- winreg.KEY_WOW64_64KEY — 64비트 Windows의 애플리케이션이 64비트 레지스트리 뷰에서 작동해야 함을 나타냄
- winreg.KEY_WOW64_32KEY — 64비트 Windows의 애플리케이션이 32비트 레지스트리 뷰에서 작동해야 함을 나타냄
값 타입 (Value Types)
- winreg.REG_BINARY — 모든 형태의 바이너리 데이터
- winreg.REG_DWORD — 32비트 숫자
- winreg.REG_DWORD_LITTLE_ENDIAN — 리틀엔디언 형식의 32비트 숫자.
REG_DWORD와 동등 - winreg.REG_DWORD_BIG_ENDIAN — 빅엔디언 형식의 32비트 숫자
- winreg.REG_EXPAND_SZ — 환경 변수(%PATH%)에 대한 참조를 포함하는 널 종료 문자열
- winreg.REG_LINK — Unicode 심볼릭 링크
- winreg.REG_MULTI_SZ — 두 개의 널 문자로 끝나는 널 종료 문자열 시퀀스
- winreg.REG_NONE — 정의된 값 타입 없음
- winreg.REG_QWORD — 64비트 숫자
- winreg.REG_QWORD_LITTLE_ENDIAN — 리틀엔디언 형식의 64비트 숫자.
REG_QWORD와 동등 - winreg.REG_RESOURCE_LIST — 장치 드라이버 자원 목록
- winreg.REG_FULL_RESOURCE_DESCRIPTOR — 하드웨어 설정
- winreg.REG_RESOURCE_REQUIREMENTS_LIST — 하드웨어 자원 목록
- winreg.REG_SZ — 널 종료 문자열
레지스트리 핸들 객체 (Registry Handle Objects)
이 객체는 Windows HKEY 객체를 래핑하고, 객체가 파괴될 때 자동으로 닫아요. 핸들 객체는 __bool__() 의미론을 제공해 유효한 핸들을 테스트할 수 있어요. 정수로 변환할 수 있고, Detach() 메서드로 Windows 핸들을 핸들 객체에서 분리할 수 있어요.
- PyHKEY.Close() — 기본 Windows 핸들을 닫아요.
- PyHKEY.Detach() — 핸들 객체에서 Windows 핸들을 분리해요.
- PyHKEY.enter() / *PyHKEY.exit(exc_info) — HKEY 객체는
with문을 위한 컨텍스트 프로토콜을 지원해요.