레지스트리를 사용하는 경우
Windows 레지스트리는 소량의 구성 데이터(설정, 기본 설정, 사용자별 상태)를 저장하는 데 적합합니다. 다른 시나리오에 대한 대안을 고려합니다.
| Scenario | 권장 사항 |
|---|---|
| 애플리케이션 설정(최신 앱) | 데스크톱 앱의 경우 ApplicationData.LocalSettings (UWP/WinUI) 또는 JSON/XML 파일을 %APPDATA% 선호합니다. 백업, 마이그레이션 및 디버그가 더 쉽습니다. |
| 큰 데이터 또는 구조화된 데이터 | 큰 Blob을 레지스트리 값에 저장하는 대신 파일(JSON, SQLite 등)을 사용합니다. |
| 컴퓨터 전체 서비스 구성 | 레지스트리가 HKEY_LOCAL_MACHINE 적절합니다. 이는 Windows 서비스에 대한 표준 메커니즘입니다. |
| 사용자별 기본 설정(데스크톱 앱) | 레지스트리 HKEY_CURRENT_USER\Software\<Company>\<App> 는 적절하고 기존의 레지스트리입니다. |
| 프로세스 간의 공유 상태 | 명명된 공유 메모리, 명명된 파이프 또는 파일을 고려합니다. 레지스트리에 값 읽기에 기본 제공된 변경 알림이 없습니다. 거친 알림에만 RegNotifyChangeKeyValue 를 사용합니다. |
Important
보안 모범 사례: 필요한 최소 액세스 권한(예: KEY_READ 또는KEY_WRITE)을 사용하여 레지스트리 키를 열거나 MAXIMUM_ALLOWED사용하지 KEY_ALL_ACCESS 마세요.
HKEY_LOCAL_MACHINE 관리자 권한(관리자) 프로세스에서만 씁니다. 항상 레지스트리 함수의 반환 값을 확인합니다. 성공 시 반환되고 실패 시 Win32 오류 코드(HRESULT 아님)가 반환 ERROR_SUCCESS 됩니다.
메모
일반적인 문제 - 문자열 형식: 레지스트리 문자열 값(REG_SZ, REG_EXPAND_SZ)은 전달된 RegSetValueEx바이트 수에 null 종결자를 포함해야 합니다. 문자열을 RegQueryValueExRegGetValue읽을 때 저장된 값에 종결자가 포함되지 않을 수 있는 경우 항상 null로 버퍼를 직접 종료합니다. 일부 타사 소프트웨어는 문자열을 씁니다.
레지스트리 함수는 다음과 같습니다.
| 기능 | 묘사 |
|---|---|
| getSystemRegistryQuota | 레지스트리의 현재 크기와 레지스트리가 시스템에서 달성할 수 있는 최대 크기를 검색합니다. |
| RegCloseKey | 지정된 레지스트리 키에 대한 핸들을 닫습니다. |
| RegConnectRegistry | 다른 컴퓨터에서 미리 정의된 레지스트리 핸들에 대한 연결을 설정합니다. |
| RegCopyTree | 지정된 레지스트리 키를 해당 값 및 하위 키와 함께 지정된 대상 키에 복사합니다. |
| RegCreateKeyEx | 지정된 레지스트리 키를 만듭니다. |
| RegCreateKeyTransacted | 지정된 레지스트리 키를 만들어 트랜잭션에 연결합니다. |
| RegDeleteKey | 하위 키와 해당 값을 삭제합니다. |
| RegDeleteKeyEx | 레지스트리의 지정된 플랫폼별 보기에서 하위 키와 해당 값을 삭제합니다. |
| RegDeleteKeyTransacted | 레지스트리의 지정된 플랫폼별 보기에서 하위 키와 해당 값을 트랜잭션 작업으로 삭제합니다. |
| RegDeleteKeyValue | 지정된 레지스트리 키 및 하위 키에서 지정된 값을 제거합니다. |
| RegDeleteTree | 지정된 키의 하위 키와 값을 재귀적으로 삭제합니다. |
| RegDeleteValue | 지정된 레지스트리 키에서 명명된 값을 제거합니다. |
| RegDisablePredefinedCache | 현재 프로세스에 대한 HKEY_CURRENT_USER 대해 미리 정의된 레지스트리 핸들에 대한 핸들 캐싱을 사용하지 않도록 설정합니다. |
| RegDisablePredefinedCacheEx | 현재 프로세스에 대해 미리 정의된 모든 레지스트리 핸들에 대한 핸들 캐싱을 사용하지 않도록 설정합니다. |
| RegDisableReflectionKey | 지정된 키에 대한 레지스트리 리플렉션을 사용하지 않도록 설정합니다. |
| RegEnableReflectionKey | 지정된 비활성화된 키에 대한 레지스트리 리플렉션을 사용하도록 설정합니다. |
| RegEnumKeyEx | 지정된 열린 레지스트리 키의 하위 키를 열거합니다. |
| RegEnumValue | 지정된 열린 레지스트리 키의 값을 열거합니다. |
| RegFlushKey | 지정된 열린 레지스트리 키의 모든 특성을 레지스트리에 씁니다. |
| regGetKeySecurity | 지정된 열린 레지스트리 키를 보호하는 보안 설명자의 복사본을 검색합니다. |
| RegGetValue | 지정된 레지스트리 값의 형식 및 데이터를 검색합니다. |
| RegLoadKey | HKEY_USERS 또는 HKEY_LOCAL_MACHINE 아래에 하위 키를 만들고 지정된 파일의 등록 정보를 해당 하위 키에 저장합니다. |
| RegLoadMUIString | 지정된 키와 하위 키에서 지정된 문자열을 로드합니다. |
| RegNotifyChangeKeyValue | 지정된 레지스트리 키의 특성 또는 내용에 대한 변경 내용을 호출자에게 알깁니다. |
| RegOpenCurrentUser | 현재 스레드가 가장하는 사용자의 HKEY_CURRENT_USER 키에 대한 핸들을 검색합니다. |
| RegOpenKeyEx | 지정된 레지스트리 키를 엽니다. |
| RegOpenKeyTransacted | 지정된 레지스트리 키를 열고 트랜잭션과 연결합니다. |
| RegOpenUserClassesRoot | 지정된 사용자의 HKEY_CLASSES_ROOT 키에 대한 핸들을 검색합니다. |
| RegOverridePredefKey | 미리 정의된 레지스트리 키를 지정된 레지스트리 키에 매핑합니다. |
| RegQueryInfoKey | 지정된 레지스트리 키에 대한 정보를 검색합니다. |
| RegQueryMultipleValues | 열린 레지스트리 키와 연결된 값 이름 목록에 대한 형식 및 데이터를 검색합니다. |
| RegQueryReflectionKey | 지정된 키에 대해 리플렉션을 사용하지 않도록 설정했는지 여부를 결정합니다. |
| RegQueryValueEx | 열린 레지스트리 키와 연결된 지정된 값 이름의 형식 및 데이터를 검색합니다. |
| RegRenameKey | 지정된 레지스트리 키의 이름을 변경합니다. |
| RegReplaceKey | 레지스트리 키와 모든 하위 키를 지원하는 파일을 다른 파일로 바꿉니다. |
| RegRestoreKey | 지정된 파일에서 레지스트리 정보를 읽고 지정된 키 위에 복사합니다. |
| RegSaveKey | 지정된 키와 모든 하위 키 및 값을 새 파일에 저장합니다. |
| RegSaveKeyEx | 지정된 키와 모든 하위 키 및 값을 새 파일에 저장합니다. 저장된 키 또는 하이브의 형식을 지정할 수 있습니다. |
| RegSetKeyValue | 지정된 레지스트리 키 및 하위 키에서 지정된 값의 데이터를 설정합니다. |
| RegSetKeySecurity | 열린 레지스트리 키의 보안을 설정합니다. |
| RegSetValueEx | 레지스트리 키 아래에 지정된 값의 데이터와 형식을 설정합니다. |
| RegUnLoadKey | 레지스트리에서 지정된 레지스트리 키와 해당 하위 키를 언로드합니다. |
레지스트리에서 사용할 수 있는 셸 함수는 다음과 같습니다.
- AssocCreate
- AssocQueryKey
- AssocQueryString
- AssocQueryStringByKey
- SHCopyKey
- SHDeleteEmptyKey
- SHDeleteKey
- SHDeleteValue
- SHEnumKeyEx
- SHEnumValue
- SHGetValue
- SHQueryInfoKey
- SHQueryValueEx
- SHRegCloseUSKey
- SHRegCreateUSKey
- SHRegDeleteEmptyUSKey
- SHRegDeleteUSValue
- SHRegDuplicateHKey
- SHRegEnumUSKey
- SHRegEnumUSValue
- SHRegGetBoolUSValue
- SHRegGetIntW
- SHRegGetPath
- SHRegGetUSValue
- SHRegOpenUSKey
- SHRegQueryInfoUSKey
- SHRegQueryUSValue
- SHRegSetPath
- SHRegSetUSValue
- SHRegWriteUSValue
- SHSetValue
다음은 초기화 파일 함수입니다. 정보를 검색하고 시스템 또는 애플리케이션 정의 초기화 파일로 정보를 복사합니다. 이러한 함수는 16비트 버전의 Windows와의 호환성을 위해서만 제공됩니다. 새 애플리케이션은 레지스트리를 사용해야 합니다.
| 기능 | 묘사 |
|---|---|
| GetPrivateProfileInt | 초기화 파일의 지정된 섹션에서 키와 연결된 정수를 검색합니다. |
| GetPrivateProfileSection | 초기화 파일의 지정된 섹션에 대한 모든 키와 값을 검색합니다. |
| GetPrivateProfileSectionNames | 초기화 파일에서 모든 섹션의 이름을 검색합니다. |
| GetPrivateProfileString | 초기화 파일의 지정된 섹션에서 문자열을 검색합니다. |
| GetPrivateProfileStruct | 초기화 파일의 지정된 섹션에서 키와 연결된 데이터를 검색합니다. |
| GetProfileInt | Win.ini 파일의 지정된 섹션에 있는 키에서 정수를 검색합니다. |
| GetProfileSection | Win.ini 파일의 지정된 섹션에 대한 모든 키와 값을 검색합니다. |
| GetProfileString | Win.ini 파일의 지정된 섹션에서 키와 연결된 문자열을 검색합니다. |
| writePrivateProfileSection | 초기화 파일에서 지정된 섹션의 키와 값을 바꿉니다. |
| WritePrivateProfileString | 문자열을 초기화 파일의 지정된 섹션에 복사합니다. |
| writePrivateProfileStruct | 초기화 파일의 지정된 섹션에 있는 키에 데이터를 복사합니다. |
| WriteProfileSection | Win.ini 파일의 지정된 섹션 내용을 지정된 키와 값으로 바꿉니다. |
| WriteProfileString | 문자열을 Win.ini 파일의 지정된 섹션에 복사합니다. |
사용되지 않는 함수
이러한 함수는 16비트 버전의 Windows와의 호환성을 위해서만 제공됩니다.