티스토리 뷰
레지스트리 함수
RegCloseKey
: 이 함수는 특정한 키에 핸들을 해제한다.
LONG RegCloseKey( HKEY
hKey
// 현재 열려있지만 닫을 키의 핸들 );
반환값
: 만약 이 함수가 성공적으로 실행된다면, 리턴값은 ERROR_SUCCEES 이다. 만약 이 함수가 실행되지 않는다면, 리턴값은 WINERROR.H 헤더파일에 정의된 0이 아닌 에러 코드값이다. 당신은 에러의 일반적인 묘사를 얻기위해, FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 특정한 키의 핸들은 그것이 닫힌 후에는 사용되지 말아야만 한다. 그것은 더 이상 유효하지 않기 때문이다. 키의 핸들은 필요하지 않을때는 열려있어서는 않된다.
RegCloseKey함수는 반환하기 전에 꼭 레지스트리에 정보를 작성하지는 않는다. 그것은 하드디스크에서 나온 정보를 작성하려면 수초가 걸릴수 있다. 만약 애플리케이션이 레지스트리 정보를 하드디스크에 명백하게 작성하려거든, RegFlushKey함수를 사용해야 한다. 그렇지만, RegFlushKey함수는 많은 시스템 리소스를 사용하기 때문에 꼭 필요할때만 사용해야 한다.
Windows CE의 경우: RegCloseKey 함수는 항상 Windows CE 레지스트리에서 키들을 쏟아내는데 필요한 것을 반환, 제거하기 전에 레지스트리에 정보를 작성한다.
정보
: winreg.h 에 정의되어 있으며, advapi32.lib 를 사용한다.
참고
: Registry Overview, Registry Functions, RegCreateKey, RegCreateKeyEx, RegDeleteKey, RegFlushKey, RegOpenKey, RegOpenKeyEx, RegSetValue, RegSetValueEx
RegConnectRegistry
: 이 함수는 다른 컴퓨터의 미리 정의된 레지스트리 핸들에 연결을 설치하는 함수이다.
LONG RegConnectRegistry(
LPTSTR
lpMachineName
,
// 떨어져 있는 컴퓨터명의 주소
HKEY
hKey
,
// 미리 정의된 레지스트리 핸들
PHKEY
phkResult
// 떨어져 있는 컴퓨터 레지스트리 핸들을 위한 버퍼의 주소
);
파라미터
1) lpMachineName
: 떨어져 있는 컴퓨터의 이름을 포함한 널로 끝나는 스트링에 대한 포인터이고, 그 스트링은 다음과 같은 형태를 가지고 있다. //컴퓨터이름
만약, lpMachineName이 널이면, 로컬 컴퓨터 이름이 사용된다.
2) hKey
: 아래에 미리 정의되어 있는, 떨어져 있는 컴퓨터의 미리정의된 레지스트리 핸들들중 하나를 지명한다.
HKEY_LOCAL_MACHINE , HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 또는 98: HKEY_DYN_DATA
Windows 95 또는 98: HKEY_CURRENT_CONFIG
이 파라미터에 대해서는 HKEY_CLASSES_ROOT 와 HKEY_CURRENT_USER 키는 지명할수 없다.
3) phkResult
: 떨어져 있는 컴퓨터의 미리 정의된 핸들을 확인하는 키 핸들을 받는 변수에 대한 포인터.
반환값
: 만약 이 함수가 실행된다면, 반환값은 ERROR_SUCCESS이고, 실행되지 않는다면 반환값은 WINERROR.H 에 정의되어 있는 0 이아닌 에러 코드값이다. 너는 일반적인 에러 묘사를 얻기위해 FORMAT_MESSAGE_FROM 플래그를 가지고 있는 FormatMessge 함수를 사용할수 있다.
주의
: RegConnectRegistry 함수로부터 반환된 핸들이 더 이상 필요하지 않을 때, 그것은 RegCloseKey 함수를 호출해서 닫아야만 한다.
정보
: WindowsCE에서는 지원되지 않는다. winreg.h에 정의되어 있고, advapi32.lib 를 사용한다.
WindowsNT에서는 유니코드와 ANSI버전으로 실행된다.
참고
: Registry Overview, Registry Functions, RegCloseKey
RegCreateKey
:이 함수는 특별한 키를 생성한다. 만약 레지스트리에 그 키가 존재한다면, 이 함수는 그 키를 연다. 이 함수는 윈도우 버전 3.1에 적합하도록 제공되었다. Win32에 기반한 애플리캐이션은 RegCreateKeyEx함수를 사용하여야 한다.
LONG RegCreateKey(
HKEY
hKey
,
// 키를 열기위한 핸들
LPCTSTR
lpSubKey
,
// 열을 키의 하위키 이름의 주소
PHKEY
phkResult
// 열린 핸들에 대한 버퍼의 주소
);
파라미터
1) hKey: 현재 열려있는 키의 핸들 또는 아래의 미리 정의된 개방되어 있는 핸들값중 하나에대한 핸들
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
RegCreateKey함수에 의해 열렸거나 생성된 키는 hKey에 의해 확인된 키의 하위키이다.
2) lpSubKey: 이 함수가 열거나 생성한 키 이름을 지목하는 널로 끝나는 스트링에 대한 포인터이다. 이 키는 hKey 파라미터에 의해 확인된 키의 하위키 이어야 한다.
만약 hKey가 미리 정의된 키들중 하나라면, lpSubKey는 널일 것이다. 그런 경우에, phkResult 에 의해 반환된 핸들은 그 함수에 전달된 hKey 와 같다.
3) phkResult: 이것은 열렸거나 생성된 키에 대한 핸들을 받는 변수에 대한 포인터이다. 반환된 핸들이 더 이상 필요하지 않을 때, 그것을 닫기 위해 RegCloseKey 함수를 호출하면 된다.
반환값
: 만약 함수가 실행되면 ERROR_SUCCESS가 반환되고, 실행되지 않는다면 WINERROR.H 에 정의되어 있는 0이 아닌 에러 코드값을 반환한다. 일반적인 에러 묘사를 얻기 위해서는 FORMAT_MESSAGE_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 애플리캐이션은 한번에 여러 개의 키를 생성하기 위해서 RegCreateKey 함수를 사용할수 있다. 예를들어, 애플리캐이션은 lpSubKey 파라미터에대한 아래의 명시된 스트링에 의해 하위키를 세번 생성한 것 처럼, 한번에 네개의 다른 레벨의 하위키를 생성할수 있다.
subkey1 /subkey2 /subkey3 /subkey4
hKey파라미터에 의해서 확인된 키는 KEY_CREATE_SUB_KEY access (KEY_WRITE access includes KEY_CREATE_SUB_KEY access) 와 함께 열려야 한다.
만약 lpSubKey 파라미터가 비어있는 스트링의 주소라면, 그 함수는 hKey파라미터에 의해 확인된 키를 열고 보낸다.
정보
: Windows CE에서는 지원되지 않으며, winreg.h에 정의되어 있으며, advapi32.lib를 사용한다. WindowsNT에서는 유니코드와 ANSI버전을 사용한다.
참고
Registry Overview, Registry Functions, RegCloseKey, RegCreateKeyEx, RegDeleteKey, RegOpenKey, RegOpenEx, RegSetValue
RegCreateKeyEx
: 이 함수는 특별한 키르 생성한다. 만약 그 키가 레지스트리에 존재하면, 함수는 그것을 연다.
LONG RegCreateKeyEx(
HKEY
hKey
,
// 키를 열기위한 핸들
LPCTSTR
lpSubKey
,
// 하위키 이름의 주소
DWORD
Reserved
,
// reserved
LPTSTR
lpClass
,
// 클래스 스트링의 주소
DWORD
dwOptions
,
// 특별한 옵션플래그
REGSAM
samDesired
,
// 요청된 안전 액세스
LPSECURITY_ATTRIBUTES
lpSecurityAttributes
,
// 키 안전 구조체의 주소
PHKEY
phkResult
,
// 열린 핸들에 대한 버퍼의 주소
LPDWORD
lpdwDisposition
// 배열값 버퍼의 주소
);
파라미터
1) hKey: 이것은 현재 열린 키의 핸들이거나, 아래의 미리 정의된 핸들값 중 하나의 키에 대한 핸들이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
그 키는 RegCreateKeyEx 함수에 의해 열리거나 생성된 키는 hKey 파라미터에 의해 확인된 키의 하위키이다.
2) lpSubKey: 이것은 함수가 열거나 생성한 하위키의 이름을 지목하고 있는 널로 끝나는 스트링의 포인터이다. 그 지목된 하위키는 hKey파라미터에 의해 확인된 키의 하위키여야 한다. 이 하위키는 백슬러쉬”/” 로 시작되어서는 안된다. 이 파라미터는 널일 수도 없다.
3) Resered: 이것은 0이어야만 한다.
4) LpClass: 이것은 키의 클래스를 지목하는 널로 끝나는 스트링의 포인터이다. 이 파라미터는 만약 키가 이미 존재하고 있다면 무시되어진다.
dwOptions: 이것은 키에대한 옵션을 지목한다. 이 파라미터는 아래의 값들중 하나일수 있다.
REG_OPTION_NON_VOLATILE : 이 키는 잘 바뀌지 않는다. 이것은 디폴트이다. 이 정보는 시스템이 다시 시작될 때 파일에 저장되고 보존된다.
REG_OPTION_VOLATILE: Windows95의 경우 이 값은 무시된다. 만약 REG_OPTION_VOLATILE이 지목되었다면, RegCreateKeyEx 함수는 바뀌지 않는 키를 생성하고 ERROR_SUCCESS 를 반환한다.
REG_OPTION_BACKUP_RESTORE: WindowsNT에만 적용된다.
5) SamDesired: 이것은 새로운 키에대한 요청된 시큐리티 액세스를 지목하는 액세스 마스크를 지목한다. 이 파라미터는 아래의 값들과 조화될수 있다.
KEY_ALL_ACCESS : 모든 값을 허용
KEY_CREATE_LINK : 상징적인 링크를 생성하는 것을 승인
KEY_CREATE_SUB_KEY : 하위키를 생성하느것을 승인
KEY_ENUMERATE_SUB_KEYS : 하위키를 정렬하는 것을 승인
KEY_EXECUTE : 액세스 리드를 허용
KEY_NOTIFY : 통보 변경을 허용
KEY_QUERY_VALUE : 하위키 데이터를 조사하는 것을 허용
KEY_READ : KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY 를 허용
KEY_SET_VALUE : 하위 데이터의 셋을 허용
KEY_WRITE : KEY_SET_VALUE 와 KEY_CREATE_SUB_KEY 를 허용
6) lpSecurityAttributes: 이 것은 SECURITY_ATTRIBUTES 구조체에 대한 포인터로 반환된 핸들이 자식 과정에 의해 상속될 수 있을지를 결정한다.
7) phkResult: 이것은 열렸거나 생성된 키에대한 핸들을 받는 변수에 대한 포인터이다. 반환된 핸들이 더 이상 필요가 없을때는 RegCloseKey함수를 호출해서 그것을 닫아야 한다.
8) lpdwDisosition: 이것은 아래에 배치된 값들중의 하나를 받는 변수에 대한 포인터이다.
REG_CREATED_NEW_KEY: 이 키는 존재하지 않았고, 생성되어졌다.
REG_OPENED_EXISTING_KEY: 이 키는 존재하고, 변경된 것 없이 열려있다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: RegCreateKeyEx함수가 생성한 키는 값을 가지지 않는다. 애플리캐이선은 키값들을 만들기위해 RegSetValue 또는 RegSetValueEx함수를 사용할수 있다.
hKey파라미터에 의해서 확인된 키는 KEY_CREATE_SUB_KEY 액세스로 열렸음이 틀림없다. 그 키를 열기 위해서, RegCreateKeyEx 또는 RegOpenKeyEx 함수를 이용해라. 애플리캐이션은 HKEY_USER 또는 HKEY_LOCAL_MACHINE 아래로는 키를 생성할수 없다. 애플리캐이션은 레지스트리의 몫을 잠시 잠그기 위해서 RegCreateKeyEx 함수를 사용할수 있다. 그 잠금 프로세스가 새로운 키를 생성할 때, 그것은 REG_CREATED_NEW_KEY의 값을 받고, 그것이 잠금이 되어있는 지를 조사한다. 또 다른 같은 키를 생성하려는 과정의 시도는 REG_OPENED_EXISTING_KEY 값을 받고, 이미 다른 프로세스가 그 잠금을 소유하고 있는지르 조사한다.
lpSecurityAttributes 파라미터는 널로 정해질수는 없다. Windows CE 는 자동적으로 임의의 시큐리티 디스크립터를 키에 할당한다.
정보
: 이것은 winreg.h에 정의되어 있으며, advapi32.lib를 사용한다. WindowsNT에서는 유니코드와 ANSI로서 실행된다.
참고
: Registry Overview, Registry Functions, RegCloseKey, RegCreateKey, RegDeleteKey, RegOpenKey, RegOpenKeyEx, RegSaveKey, SECURITY_ATTRIBUTES
RegDeleteKey
Windows95: 이 함수는 하위키와 그것의 모든 자식키들을 삭제한다.
WindowsNT: 이 함수는 지목된 하위키를 지우고, 삭제된 하위키는 하위키를 가지고 있지 않아야만 한다.
LONG RegDeleteKey(
HKEY
hKey
,
// 키를 열기위한 핸들
LPCTSTR
lpSubKey
// 삭제할 하위키 이름의 주소
);
파라미터
1) hKey: 이것은 현재 열려있는 키에대한 핸들이거나, 아래에 미리 정의된 핸들값중 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
lpSubKey파라미터에 의해 지목된 키는 hKey에 의해 확인된 키의 하위키 이여야 한다.
2) lpSubKey: 이것은 삭제할 키의 이름을 지목하고있는 널로 끝나는 스트링에 대한 포인터이다. WindowsNT의 경우, 지목된 키는 하위키를 가지고 있어서는 안된다.
반환값
:만약, 함수가 제대로 실행된다면, 반환값은 ERROR_SUCCESS 이고, 그렇지 않다면 반환값은 WINERROR.H에 정의되어 있는 0이 아닌 코드값이 된다. 일반적인 에러의 묘사를 얻기위해서는 FORMAT_MESSAGE_FROM 플래그를 가지고있는 FormatMessage 함수를 사용하면 된다.
주의
:만약 함수가 실행된다면, RegDeleteKey 함수는 레지스트리로부터 지목된 키를 제거한다. 그것의 모든값을 포함한 키 항목이 삭제된다. 키를 열기위해 RegCreateKeyEx 또는 RegOpenKeyEx 함수를 사용한다. RegCreateKey 또는 RegOpenKey 함수를 사용해서는 안된다. WindowsCE의 경우, RegDeleteKey는 현재 열려있는 키에는 사용될수 없다.
정보
:이것은 winreg.h에 정의되어 있고, advapi32.h를 사용한다. WindowsNT에서는 유니코드와 ANSI버전을 실행한다.
참고
: Registry Overview, Registry Functions, RegCloseKey, RegCreateKeyEx, RegOpenKeyEx
RegDeleteValue
이 함수는 지목된 레지스트리 키로부터 명명된 값을 삭제한다.
LONG RegDeleteValue(
HKEY
hKey
,
// 키의 핸들
LPCTSTR
lpValueName
// 값 이름의 주소
);
파라미터
1) hKey: 현제 열려있는 키의 핸들이거나, 아래의 미리 정의된 핸들값 중의 하나
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
2) lpValueName: 이것은 제거할 값의 이름을 가진 널로 끝나는 스트링에 대한 포인터이다. 만약, 이 파라미터가 널이거나 스트링이 비어있다면, RegSetValue함수에 의해서 정해진 값은 제거된다.
반환값
: 만약 함수가 실행된다면, 반환값은 ERROR_SUCCESS 이고, 그렇지 않다면, 반환값은 WINERROR.H 에 정의된 0이 아닌 에러 코드값이된다. FORMAT_MESSAGE_FROM_SYSTEM플래그를 가지고 있는 FormatMessage 함수를 사용해서 일반적인 에러의 묘사를 얻어낼수 있다.
주의
: hKey 파라미터에 의해서 확인된 키는 KEY_SET_VALUE access (KEY_WRITE access includes KEY_SET_VALUE access).로 열려졌었어야만 한다.
정보
: winreg.h에 정의되어 있고, advapi32.lib를 사용하며, WindowsNT에서는 유니코드와 ANSI버전을 사용한다.
참고
: Registry Overview, Registry Functions, RegSetValue, RegSetValueEx
RegEnumKey
이것은 지목된 열린키 레지스트리 키의 하위키들을 열거시키는 함수이다. 이 함수는 각기 그것이 호출된때 하나의 하위키의 이름을 회수한다. 이 함수는 윈도우3.1과 함께 사용을 위해 재공된다. Win32기반의 애플리케이션은 RegEnumKeyEx함수를 사용해야 한다.
LONG RegEnumKey(
HKEY
hKey
,
//
의심할
키에대한
핸들
DWORD
dwIndex
,
//
의심할
하위키의
인덱스
LPTSTR
lpName
,
//
하위키
이름에대한
버퍼의
주소
DWORD
cbName
//
하위키
버퍼의
사이즈
);
파라미터
1) hKey: 이것은 현재 열려있는 키에대한 핸들 또는, 아래의 미리 정의된 핸들값중 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
반환된 키들은 hKey에의해 확인된, 키와 관련이 있다.
2) dwIndex: 회수할 하위키의 인덱스를 지목해라. 이 값은 RegEnumKey함수에 첫번째 호출을 위하여 0이어야 하며, 그 다음의 호출을 위하여 증가되어 진다. 하위키는 명령을 받지 않았기 때문에, 어떤 새로운 하위키는 독단적인 인덱스를 가질것이다. 이것은 함수가 어떤 명령에서 하위키들을 돌려줄 것이라는 것을 뜻한다.
3) lpName: 이것은 널 캐릭터를 제거한, 하위키의 이름을 받는 버퍼에 대한 포인터이다. 이 함수는 그 하위키의 이름을 복사할 뿐이지, 전체 키조직을 버퍼에 복사하는 것은 아니다.
4) cbName: 이것은 lpName 파라미터에 의해 지목된 캐릭터 버퍼의 사이즈를 캐릭터로 지목한다. 필요한 버퍼의 사이즈를 결정하고, hKey 파라미터에의해 확인된 키의 가장큰 하위키의 사이즈를 결정하기 위해 RegQueryInfoKey 함수를 이용한다. 가장 크게 요구되는 버퍼의 크기는 MAX_PATH+1 캐릭터이다.
반환값
: 만약 함수가 실행된다면 ERROR_SUCCESS 가 반환되며, 그렇지 않다면, WINERROR.H에 정의된 0이 아닌 에러코드를 반환한다. 일반적인 에러묘사를 위해서 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 하위키를 열거하기 위해서, 애플리캐이션은 초기에 dwIndex 파라미터를 0으로 설정함과 동시에 RegEnumKey함수를 호출한다. 그 애플리캐이션은 더 이상 하위키가 없을 때 까지(함수가 ERROR_NO_MORE_ITEMS를 반환할때까지) dwIndex 파라미터를 증가하고 RegEnumKey 함수를 호출한다.
그 애플리캐이션은 함수의 첫번째 호출시에 마지막 키의 인덱스에 dwIndex를 설정할수도 있고, 0을 가진 하위키가 열거될 때 까지 인덱스를 감소시킨다. 마지막 하위키의 인덱스를 회수하기 위해서는 RegQueryInfoKey함수를 사용해라.
애플리캐이션이 RegEnumKey 함수를 사용하는 동안, 그것은 조회되고 있는 키를 변경할수 있는 함수들을 호출해서는 안된다. hKey 파라미터에 의해서 확인된 키는 KEY_ENUMERATE_SUB_KEYS (KEY_READ includes KEY_ENUMERATE_SUB_KEYS ) 로 여려있어야 한다. 그 키를 열기 위해서 RegCreateKeyEx 또는 RegOpenKeyEx 함수를 사용해라.
정보
: winreg.h에 정의되어 있으며, advapi32.lib를 사용한다. WindowsNT에서는 유니코드와 ANSI버전을 사용한다.
참고
: Registry Overview, Registry Functions, RegCloseKey, RegCreateKeyEx, RegDeleteKey, RegEnumKeyEx, RegOpenKeyEx, RegQueryInfoKey, RegQueryValue
RegEnumKeyEx
: 이 함수는 지목된 열린 레지스트리 키의 하위키들을 열거하는 함수이다. 이 함수는 호출이 될때마다 하나의 하위키에 대한 정보를 회수한다. RegEnumKey 함수와는 달리 RegEnumKeyEx함수는 마지막으로 사용되었었던 하위키의 클래스 이름과 시간을 회수한다.
LONG RegEnumKeyEx(
HKEY
hKey
,
// 열거할 키의 핸들
DWORD
dwIndex
,
// 열거할 하위키의 인덱스
LPTSTR lpName, // 하위키 이름에 대한 버퍼의 주소
LPDWORD
lpcbName
,
// 하위키 버퍼의 사이즈에 대한 주소
LPDWORD
lpReserved
,
// reserved
LPTSTR
lpClass
,
// 클래스 스트링에 대한 버퍼의 주소
LPDWORD
lpcbClass
,
// 클래스 버퍼의 사이즈에 대한 주소
PFILETIME
lpftLastWriteTime
// 마지막으로 작성된 시간키에 대한 주소 );
파라미터
1) hKey: 이것은 현재 열린키의 핸들과 아래의 미리 정의된 핸들값중 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
열거된 키는 hKey에 의해 확인된 키의 하위키이다.
2) dwIndex: 이것은 회수할 하위키의 인덱스를 가리킨다. 이 파라미터는 RegEnumKeyEx함수를 첫번째 호출할때를 위해 0으로 되어있고, 그 다음 호출부터는 증가된다.
하위키는 지시되지 않았기 때문에 어떤 새로운 하위키도 독단적인 인덱스를 가질것이다. 이것은 함수가 어떤 명령에도 하위키를 돌려주는 것을 의미한다.
3) lpName: 이것은 널 캐릭터 제거를 포함한 하위키의 이름을 받는 버퍼에 대한 포인터이다. 이 함수는 단지 하위키의 이름을 복사하지, 전체 키조직을 버퍼에 복사하지는 않는다.
4) lpcbName: 이것은 캐릭터로 lpName 파라미터에 의해 지적된 버퍼의 사이즈를 지명하는 변수에 대한 포인터이다. 이 사이즈는 널 캐릭터를 제거를 포함한다. 함수가 반환한때, lpcbName 에 의해 지적된 변수는 버퍼에 저장된 캐릭터의 수를 포함한다. 반환된 카운터는 널을 제거한 캐릭터를 포함하지 않는다.
5) lpReserved: 이것은 널이어야만 한다.
6) lpClass: 이것은 함수가 반환할 때, 열거된 하위키의 클래스를 포함한 버퍼에 대한 포인터이다. 이 파라미터는 만약 그 클래스가 요구되지 않는다면, 널일수도 있다.
7) lpcbClass: 이것은 캐릭터로 lpClass파라미터에 의해서 지명된 버퍼의 사이즈를 지명하는 변수에 대한 포인터이다. 그 사이즈는 널을 제거한 캐릭터를 포함해야 한다. 함수가 반환될 때, lpcbClass는 그 버퍼에 저장된 캐릭터의 수를 포함한다. 반환된 카운터는 널을 제거한 포인터를 포함하지 않는다. 이 파라미터는 단지 lpClass가 널일때만 널이된다.
8) lpftLastWriteTime: 이것은 최근에 작성된 열거된 하위키의 시간을 받는 변수에 대한 포인터이다.
반환값
:만약 함수가 실행된다면, 이것은 ERROR_SUCCESS 를 반환한다. 그렇지 않다면, WINERROR.H에 정의된 0이 아닌 에러 코드를 반환한다. 일반적인 에러 메시지를 얻기 위해서는 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 하위키를 열거하기 위해서는, 애플리캐이션은 초기에 dwIndex파라미터가 0으로 설정되어 있는 RegEnumKeyEx함수를 호출해야 한다. 애플리캐이션은 그 다음부터 더 이상 하위키들이 없을 때 까지(함수가 ERROR_NO_MORE_ITEMS를 반환할 때 까지) RegEnumKeyEx 함수를 호출하고, dwIndex 파라미터를 증가시킨다.
애플리캐이션은 또한 dwIndex를 함수의 첫번재 호출에서 최근의 하위키의 인덱스로 설정할수 있고, 0을 인덱스로 가진 하위키가 열거될때까지 인덱스를 감소시킨다. 최근의 하위키의 인덱스를 회수하기 위해 RegQueryInfoKey 함수를 사용한다. 애플리캐이션이 RegEnumKeyEx 함수를 사용하는 동안, 그것은 열거되고 있는 키를 변경할수 있는 어떤 함수도 호출해서는 안된다. hKey에 의해서 확인된 키는 KEY_ENUMERATE_SUB_KEYS access (KEY_READ includes KEY_ENUMERATE_SUB_KEYS) 를 사용해서 열렸음이 틀림없다. RegCreateKeyEx 또는 RegOpenKeyEx함수를 키를 열기위해 사용해라.
정보
: 이것은 winreg.h에 정의되어 있고, advapi32.lib를 사용한다.
참고
:Registry Overview, Registry Functions, RegCreateKeyEx, RegDeleteKey, RegEnumKey, RegOpenKeyEx, RegQueryInfoKey
RegEnumValue
이 함수는 지명된 열려있는 레지스트리 키에 대한 값을 정렬시킨다. 이 함수는 호출될 때마다 색인이 달아진 키에대한 하나의 값 이름과 데이터를 복사한다.
LONG RegEnumValue(
HKEY
hKey
,
// 조회할 키의 핸들
DWORD
dwIndex
,
// 조회할 값의 인덱스
LPTSTR
lpValueName
,
// 값 스트링에 대한 버퍼의 주소
LPDWORD
lpcbValueName
,
// 값 버퍼의 사이즈에 대한 주소
LPDWORD
lpReserved
,
// reserved
LPDWORD
lpType
,
// 타입 코드에 대한 버퍼의 주소
LPBYTE
lpData
,
// 값 데이터에 대한 버퍼의 주소
LPDWORD
lpcbData
// 데이터 버퍼의 사이즈에 대한 주소
);
파라미터
1) hKey: 이것은 아래의 미리정의되어 있는 핸들값 중의 하나 또는 현재 열려있는 키에대한 핸들이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
정열된 값들은 hKey에의해 확인된 키와 제휴된다.
2) dwIndex: 이것은 회수될 값의 인덱스를 지명한다. 이 파라미터는 RegEnumValue 함수가 처음 호출될때를 대비해서 0으로 되어 있어야 하며, 다음 부터는 호출이 될때마다 증가된다.
값은 지시되지 않기 때문에, 어떤 새로운 값은 독단적인 인덱스를 가질것이다. 이것은 이 함수가 어떤 지시에 값은 반환하지 않는다는 것을 의미한다.
3) lpValueName: 이것은 값의 이름을 받는 0을 제거한 캐릭터를 포함한 버퍼에 대한 포인터이다.
4) lpcbValueName: 이것은 캐릭터로된 lpValueName 파라미터에 의해 지적된 버퍼의 사이즈를 지명하는 변수에 대한 포인터이다. 이 사이즈는 널을 제거한 것을 포함해야 한다. 이 함수가 반환할 때, lpcbValueName에 의해 지적된 변수는 그 버퍼에 저장된 캐릭터의 수를 포함한다. 그 반환된 카운터는 널을 제거한 것을 포함하지 않는다.
5) lpReserved: 이것은 널이어야 한다.
6) lpType: 이것은 값항목에 대한 타입코드를 받는 변수에 대한 포인터이다. 그 타입코드는 아래의 값중 하나가 될수 있다.
REG_BINARY: 이것은 어떤 형태로된 이진 데이터이다.
REG_DWORD: 이것은 32비트 숫자이다.
REG_DWORD_LITTLE_ENDIAN: 이것은 little-endian 형태로된 32비트 숫자이다. 이것은 REG_DWORD와 동등하다. little-endian 형태로된 다중바이트 값은 가장 작은 바이트부터 가장 큰 바이트까지 메모리에 저장된다. 예를 들어서, 0x12345678 은 little-endian 형태로 0x78 0x56 0x34 0x12 로 저장된다. Windows NT, Windows95, Windows98은 little-endian 컴퓨터 구조로 수행하도록 디자인 되어있다. 유닉스와 같은 시스템에서는 사용자는 big-endian 구조를 가지고 컴퓨터에 접속할것이다.
REG_DWORD_BIG_ENDIAN: 이것은 big-endian 형태의 32비트 숫자이다. big-endian 형태에서, 다중바이트는 가장큰 바이트부터 가장 낮은 바이트의 순서로 메모리에 저장된다. 예를들어, 0x12345678은 0x12 0x34 0x56 0x78 의 big-endian형태로 저장된다.
REG_EXPAND_SZ: 이것은 환경변수(예를들어 “ %PATH%”)에 확장되지 않은 레퍼런스를 포함하는 널이 제거된 스트링이다. 그것은 당신이 유니코드 또는 ANSI 함수들을 사용할지 안할지에 의존하는 유니코드 또는 ANSI스트링일 것이다. 환경변수 레퍼런스들을 확장하기 위해, ExpandEnvironmentStrings 함수를 사용한다.
REG_LINK: 이것은 유니코드의 상징적인 링크이다.
REG_MULTI_SZ: 이것은 널이 제거된 스트링들의 배열이고, 두개의 널 캐릭터들에 의해 제거된 스트링들의 배열이다
REG_NONE: 이것은 정의되지 않은 값의 타입이다.
REG_RESOURCE_LIST: 이것은 디바이스 드라이버 리소스 리스트를 말한다.
REG_SZ: 이것은 널이 제거된 스트링으로, 그것은 유니코드 또는 ANSI 함수들을 사용할지 안할지에 달린 유니코드 또는 ANSI 스트링일 것이다.
그 lpType 파라미터는 만약 타입코드가 요구되지 않는다면 널일 것이다.
7) lpData: 이것은 값 항목에 대한 데이터를 받는 버퍼에 대한 포인터이다. 이 파라미터는 만약 데이터가 요구되지 않는다면 널일 것이다.
8) lpcbData: 이것은 lpData파라미터에 의해 지적된 버퍼의 사이즈를 지명하는 변수에 대한 바이트로된 포인터이다. 이 함수가 반환할 때, lpcbData 파라미터에 의해 지적된 변수는 그 버퍼에 저장된 바이트들의 수를 포함한다. 이 파라미터는 lpData가 널일 경우에만 널 일수 있다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의: 값들을 정열하기 위해, 애플리캐이션은 초기에 dwIndex파라미터를 0으로 설정해놓은 RegEnumValue 함수를 호출할수 있다. 그 애플리캐이션은 더 이상 값들이 없을 때 까지( 함수가 ERROR_NO_MORE_ITEMS를 반환할 때 까지) dwIndex를 증가시키고, RegEnumValue 함수를 호출할것이다. 그 애플리캐이션은 또한 dwIndex를 함수의 처음 호출시에 마지막 값의 인덱스로 설정할수 있고, 그러면 인덱스 0을 가진 값이 정렬될 때 까지 인덱스를 감소시킨다. 마지막 값의 인덱스를 회수하기 위해 RegQueryInfoKey함수를 사용해라.
RegEnumValue함수를 사용하는 동안, 애플리캐이션은 조회되고 있는 키를 변경시키는 다른 레지스트리 함수를 호출해서는 안된다. hKey파라미터에 의해 확인된 키는 KEY_QUERY_VALUE 액세스를 통해서 열렸을 것이다. 그 키를 사용하기 위해 RegCreateKeyEx 또는 RegOpenKeyEx함수를 사용해라. 이름과 데이터 버퍼들의 최고 사이즈를 결정하기 위해, RegQueryInfoKey 함수를 사용해라.
정보: 이것은 winreg.h 에 정의되어 있으며, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다.
참고: Registry Overview, Registry Functions, RegCreateKeyEx, RegEnumKey, RegEnumKey Ex, RegOpenKeyEx, RegQueryInfoKey
RegFlushKey
이 함수는 레지스트리안에 열린 지명된 키의 모든 속성을 작성한다.
LONG RegFlushKey(
HKEY hKey // 작성할 키의 핸들
);
파라미터
1) hKey: 이것은 아래의 미리정의되어 있는 핸들값 중의 하나 또는 현재 열려있는 키에대한 핸들이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 키를 변경하기 위해서 RegFlushKey함수를 호출하는 것은 필요하지 않다. 레지스트리 변경은 느린 프러숴를 사용하는 레지스트리에 의해 디스크에 프러쉬된다. 레지스트리 변경은 또한 시스템 종료시에 디스크에 프러쉬된다. RegCloseKey 와 달리, RegFlushKey함수는 단지 모든 데이터가 레지스트리에 작성될 때만 값을 반환한다. RegFlushKey함수는 또한 다른 키들의 부분 또는 모든 것을 작성한다. 이 함수를 과도하게 호출하는 것은 애플리캐이션의 실행에 나쁜 효과를 일으킬수도 있다. 애플리케이션은 만약 그것이 디스크에 있는 레지스트리 변경을 꼭 필요로 할때만 RegFlushKey함수를 사용한다. 일반적으로, 그렇지 않을 경우에는 RegFlushKey 함수는 거의 사용될 필요가 없다.
정보: 이것은 winreg.h 에 정의되어 있으며, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다.
참고: Registry Overview, Registry Functions, RegCloseKey, RegDeleteKey
RegGetKeySecurity
이 함수는 지명된 열린 레지스트리 키를 보호하는 보안 디스크립터의 복사본을 회수한다.
LONG RegGetKeySecurity(
HKEY hKey, // 설정할 키의 열린 핸들
SECURITY_INFORMATION SecurityInformation, // 디스크립터의 내용
PSECURITY_DESCRIPTOR pSecurityDescriptor, // 키에대한 디스크립터의 주소
LPDWORD lpcbSecurityDescriptor // 버퍼와 디스크립터의 사이즈 주소
);
파라미터
1) hKey: 이것은 보안 디스크립터를 회수하는 열린키를 확인한다.
2) Security Information: 이것은 요청된 보안정보를 조사하는 SECURITY_INFORMATION 값을 지명한다.
3) pSecurityDescriptor: 이것은 요구된 보안 디스크립터의 복사본을 회수하는 버퍼에 대한 포인터이다.
4) lpcbSecurityDescriptor: 이것은 pSecurityDescriptor파라미터에 의해 지목된 버퍼의 사이즈를 지명하는 변수에 대한 바이트로된 포인터이다. 이것은 함수가 반환될 때, 버퍼에 쓰여진 바이트들의 수를 포함하고 있다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 만약, pSecurityDescriptor 파라미터에 의해 지명된 버퍼가 너무 작다면, 함수는 ERROR_INSUFFICIENT_BUFFER를 반환하고, lpcbSecurityDescriptor 파라미터가 요구된 보안 디스크립터에 대해 요청된 바이트들을 포함한다.
키의 보안 디스크립터로부터 DACL, 그룹, 소유자를 읽기 위해, 핸들이 열렸을 때,프로세스를 호출하는 것은 READ_CONTROL 액세스가 허가된 것이 틀림없다. READ_CONTROL 액세스를 얻기위해, 호출자는 키의 소유자이어야 하거나 또는 키의 DACL 이 액세스를 허용해야 한다. 보안 디스크립터로 부터 SACL을 읽기위해, 프로세스를 호출하는거은 그 키가 열렸을 때, ACCESS_SYSTEM_SECURITY 액세스가 허가되었어만 한다. 이 액세스를 얻기위해 더 좋은 방법은 호출자의 현재 토큰에서 SE_SECURITY_NAME 특권을 가능하게 하는것과, ACCESS_SYSTEM_SECURITY 액세스를 위한 핸들을 열고 특권을 불가능하게 하는것이다.
정보
: 이것은 Windows 와 WindowsCE 에서는 지원되지 않으며, winreg.h 에 정의되어 있고, advapi32.lib를 사용한다.
참고
: Low-Level Access-Control Overview, Low-Level Access Control Functions, RegDeleteKey, RegOpenKeyEx, RegSetKeySecurity, SECURITY_INFORMATION
RegLoadKey
이것은 HKEY_USER 또는 HKEY_LOCAL_MACHINE 아래에 하위키를 생성하고, 그 하위키 내의 지명된 파일로부터 레지스트리 정보를 저장하는 함수이다. 이 등록정보는 벌집의 형태로 되어있다. 이 벌집 구조는 레지스트리 계층구조의 꼭대기에서 뿌리를 뻗친 키들, 하위키들, 값들의 분리된 몸체이다. 이 벌집구조는 단일 파일과 .LOG파일에 의해서 복구되어진다.
LONG RegLoadKey(
HKEY hKey, // 열린 키의 핸들
LPCTSTR lpSubKey, // 하위키 이름의 주소
LPCTSTR lpFile // 레지스트리 정보에 대한 파일이름의 주소
);
파라미터
1) hKey: 이것은 허위키가 생성될 위치의 키를 지목한다. 이것은 미리 정의된 비축된 핸들값, 또는 RegConnectRegistry함수를 호출함으로써 돌려받은 핸들일수 있다.
HKEY_LOCAL_MACHINE
HKEY_USERS
이 함수는 항상 레지스트리 계층의 꼭대기에서 정보를 읽는다. HKEY_CLASSES_ROOT 와 HKEY_CURRENT_USER 핸들값은 이 파라미터를 위해서 지명될 수 없다. 그것은 그들이 각기 HKEY_LOCAL_MACHINE 과 HKEY_USERS 핸들값들의 하위 설정들을 대표하기 때문이다.
2) lpSubKey: 이것은 hKey 아래에서 생성된 키이름을 지목하는 널이 제거된 스트링에 대한 포인터이다. 이 하위키는 파일로부터 등록정보가 읽힐 곳이다.
3) lpFile: 이것은 등록 정보를 가지고 있는 파일이름을 포함한 널이 제거된 스트링의 포인터이다. 이 파일은 RegSaveKey 함수와 함께 생성되었을 것이다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 만약 hKey가 RegConnectRegistry 에 의해서 반환된 핸들이라면, lpFile에 의해서 지정된 경로는 떨어져 있는 컴퓨터와 관련이 있을것이다.
WindowsNT의 경우에는, 프로세스의 호출은 SE_RESTORE_NAME 특권을 가지고 있어야만 한다. 특권에 대한 정보는 Privileges를 찾아보기 바란다.
정보: 이것은 winreg.h 에 정의되어 있으며, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다.
참고
:Registry Overview, Registry Functions, RegConnectRegistry, RegDeleteKey, RegReplaceKey, RegRestoreKey, RegSaveKey, RegUnloadKey
RegNotifyChangeKeyValue
이것은 지명된 레지스트리 키의 내용 또는 속성의 변화에 대한 호출자를 알려주는 함수이다. 이 함수는 만약 지목된 키가 삭제되었다면, 호출자를 알려주지 않는다는 것을 알아두기 바란다.
LONG RegNotifyChangeKeyValue(
HKEY hKey, // 보기위한 키의 핸들
BOOL bWatchSubtree, // 하위키 알림을 위한 플래그
DWORD dwNotifyFilter, // 보고된 것을 변경시킴
HANDLE hEvent, // 기호화된 이벤트에 대한 핸들
BOOL fAsynchronous // 비동시적인 보고에 대한 플래그
);
파라미터
1) hKey: 이것은 현재 열려있는 키에 대한 핸들 또는 아래의 미리 정의된 핸들 값이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
2) bWatchSubtree: 이것은 지명된 키와 그것의 모든 하위키, 또는 지명된 키에서만 변화를 보고할지 말지를 조사하는 플래그를 지명한다. 만약 이 파라미터가 TRUE 이면, 함수는 그키 그리고 그것의 하위키에서 변화들을 조사한다. 만약 이것이 FALSE 이면, 이 함수는 단지 그 키에서 만의 변화를 보고한다.
3)dwNotifyFilter: 이것은 보고된 변화를 만드는 컨트롤에 대한 플래그의 설정을 지명한다. 이 파라미터는 아래의 값들의 조화로 이루어 진다.
REG_NOTIFY_CHANGE_NAME: 이것은 만약 하위키가 증가되거나 삭제되면 호출자에게 알린다.
REG_NOTIFY_CHANGE_ATTRIBUTES: 이것은 키의 속성들에 대한 변화를, 보안 디스크립터 정보처럼 호출자에게 알려준다.
REG_NOTIFY_CHANGE_LAST_SET: 이것은 키의 값의 변화를 호출자에게 알려준다. 이것은 값의 증가와 삭제 또는 존제하는 값의 변화를 포함할 수도 있다.
REG_NOTIFY_CHANGE_SECURITY: 이것은 키의 보안 디스크립터의 변화를 호출자에게 알린다.
4) hEvent: 이것은 이벤트에 대한 핸들이다. 만약 fAsynChronous 파라미터가 TRUE이면, 함수는 즉시 반환되고, 변화들은 이 이벤트를 기호화하는 것으로 보고된다. 만약 fAsynchronous 가 FALSE 이면, hEvent는 무시된다.
5) fAsynchronous: 이것은 함수가 변화를 보고하는 방법을 조사하는 플래그를 지명한다. 만약 이 파라미터가 TRUE 라면 , 함수는 즉시 반환되고, 지명된 이벤트를 기호화하는 것으로 변화를 보고한다. 이 파라미터가 FALSE일때, 함수는 변화가 일어날 때까지 값을 반환하지 않는다. 만약 hEvent 가 유효한 이벤트를 지명하지 않는다면, fAsynchronous 파라미터는 TRUE 일수가 없다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 마약 hKey 파라미터에 의해 식별된 키가 닫히면, 이벤트는 신호로 알려진다. 이것은 애플리캐이션이 그 이벤트에 기달림 연산자로 부터 반환된 후에 열려있는 키에 의존하지 않는다는 것을 뜻한다. RegNotifyChangeKeyValue는 떨어져있는 컴퓨터의 핸들과는 동작하지 않는다. 만약 RegNotifyChangeKeyValue함수가 떨어져 있는 핸들인 hKey 값과 함께 호출이 되었다면, 그것은 ERROR_INVALID_HANDLE을 반환한다.
정보
: 이것은 WindowsCE에서는 지원되지 않으며, winreg.h에 정의되어 있고, advapi32.lib를 사용한다.
참고
: Registry Overview, Registry Functions, RegDeleteKey, RegEnumKey, RegEnumKeyEx, RegEnumValue, RegQueryInfoKey, RegQueryValue, RegQueryValueEx
RegOpenKey
이것은 지명된 키를 여는 함수이다. 이 함수는 Windows version3.1에 적합하기 위해 제공된다. Win32 기반의 애플리케이션은 RegOpenKeyEx함수를 사용해야 한다.
LONG RegOpenKey(
HKEY hKey, // 키를 열기위한 핸들
LPCTSTR lpSubKey, // 열기위한 하위키 이름의 주소
PHKEY phkResult // 키를 열기위한 핸들의 주소
);
파라미터
1) hKey: 이것은 현제 열려있는 키에 대한 핸들 또는 아래의 미리 정의된 핸들값들 중 하나이다
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA.
RegOpenKey함수에 의해서 열린키는 hKey에 의해 식별된 키의 하위키이다.
2) lpSubKey: 이것은 열기위한 키의 이름을 포함한 널을 제거한 스트링에 대한 포인터이다. 이 키는 hKey파라미터에 의해 식별된 키의 하위키 이어야 한다. 만약 이 파라미터가 널이거나 비어있는 스트링에 대한 포인터이면, 이 함수는 전달되었던 핸들과 같은 것을 반환한다.
3) phkResult: 이것은 열린 키에대한 핸들을 받는 변수에 대한 포인터이다. 반환된 핸들이 더 이상 필요가 없을 때, 종료하기 위해 RegCloseKey 함수를 호출해야 한다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 이 함수는 키를 열기위한 임의의 액세스 마스크를 사용한다. 만약, 키를 열기위해 다른 마스크가 필요하다면, 함수는 실행되지 않고 ERROR_ACCESS_DENIED 를 반환한다. 애플리케이션은 RegOpenKeyEx함수를 이 상황에서 액세스 마스크를 지명하기 위해서 사용해야 한다. RegCreateKey함수와 달리, RegOpenKey함수는 만약 키가 데이터베이스에서 존재하지 않는다면, 지명된 키를 생성하지 않는다.
정보
: 이것은 WindowsCE에서는 지원되지 않으며, winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다.
참고
: Registry Overview, Registry Functions, RegCloseKey, RegCreateKey, RegCreateKeyEx, RegDeleteKey, RegOpenKeyEx
RegOpenKeyEx
이 함수는 지명된 키를 연다.
LONG RegOpenKeyEx(
HKEY hKey, // 열을 키의 핸들
LPCTSTR lpSubKey, // 열을 하위키의 이름의 주소
DWORD ulOptions, // reserved
REGSAM samDesired, // 보안 액세스마스크
PHKEY phkResult // 키를열 핸들의 주소
);
파라미터
1) hKey: 현재 열려있는 키의 핸들과 아래의 미리 정의된 핸들값중 하나.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
2) lpSubKey: 이것은 열을 하위키의 이름을 포함하는 널을 제거한 스트링에 대한 포인터이다. 만약 이 파라미터가 널이거나 빈 스트링에 대한 포인터라면, 이 함수는 hKey 파라미터에 의해 식별된 키에 대한 새로운 핸들을 열겄이다. 이런 경우에, 함수는 이전에 열려있던 핸들을 닫지 않을것이다.
3) ulOptions: 이것은 0이어야 한다.
4) samDesired: 이것은 새로운 키를위해 요청된 보안 액세스를 나타내는 액세스 마스크를 지명한다. 이 파라미터는 아래의 값들과 조화를 이룰 수 있다.
KEY_ALL_ACCESS: 이것은 아래의 모든 값들에 대한 의미를 전부 가지고 있다.
KEY_CREATE_LINK: 심볼릭 링크를 생성하는 것을 허가
KEY_CREATE_SUB_KEY: 하위키를 생성하는 것을 허가
KEY_ENUMERATE_SUB_KEYS: 하위키들을 열거하는 것을 허가
KEY_EXECUTE: 액세스를 읽는 것을 허가
KEY_NOTIFY: 알림을 변경하는 것을 허가
KEY_QUERY_VALUE: 하위 데이터를 조회하는 것을 허가
KEY_READ: 이것은 KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KYS, KEY_NOTIFY의 의미를 모두 가지고 있다.
KEY_SET_VALUE: 하위 데이터를 설정하는 것을 허가
KEY_WRITE: 이것은 KEY_SET_VALUE and KEY_CREATE_SUB_KEY 의 의미를 가지고 있다.
5) phkResult: 이것은 열린 키에 대한 핸들을 받는 변수에 대한 포인터이다. 핸들이 더 이상 필요하지 않을 때, RegCloseKey 함수를 호출해서 닫아야한다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 이것은 RegCreateKeyEx 함수와는 달리 RegOpenKeyEx함수는, 레지스트리에 그 키가 존재하지 않는다면, 지명된 키를 생성하지 않는다.
정보
: winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다
참고
: Registry Overview, Registry Functions, RegCloseKey, RegCreateKeyEx, RegDeleteKey, RegOpenKey
RegQueryInfoKey
이것은 지명된 레지스트리 키에 대한 정보를 회수하는 함수이다.
LONG RegQueryInfoKey(
HKEY hKey, // 조회할 키의 핸들
LPTSTR lpClass, // 클래스 스트링에 대한 버퍼의 주소
LPDWORD lpcbClass, // 스트링 버퍼 클래스의 크기의 주소
LPDWORD lpReserved, // reserved
LPDWORD lpcSubKeys, // 하위키의 숫자에 대한 버퍼의 주소
LPDWORD lpcbMaxSubKeyLen, // 가장 긴 이름을 가진 하위키를 위한 버퍼의 주소
LPDWORD lpcbMaxClassLen, // 가장 긴 스트링을 가진 클래스를 위한 버퍼의 주소
LPDWORD lpcValues, // 값 항목들의 이름을 위한 버퍼의 주소
LPDWORD lpcbMaxValueNameLen, // 가장 긴 이름을 가진 값을 위한 버퍼의 주소
LPDWORD lpcbMaxValueLen, // 가장 긴 이름을 가진 데이터를 위한 버퍼의 주소
LPDWORD lpcbSecurityDescriptor, // 보안 디스크립터의 길이를 위한 버퍼의 주소
PFILETIME lpftLastWriteTime // 마지막에 작성한 시간을 위한 버퍼의 주소
);
파라미터
1) hKey: 이것은 현재 열려 있는 키에 대한 핸들 또는 아래의 미리 정의된 핸들값 중의 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
2) lpClass: 이것은 키의 클래스 이름을 받는 버퍼에 대한 포인터이다. 이 파라미터는 널일수도 있다.
3) lpcbClass: 이것은 lpClass 파라미터에 의해 지적된 버퍼의 사이즈를 지명하는 변수에 대한 캐릭터형 포인터이다. 이 사이즈는 널 캐릭터를 제거한 것을 포함한다. 이 함수가 반환될 때, 이 변수는 버퍼에 저장된 클래스 스트링의 길이를 포함한다. 반환된 카운트는 ERROR_MORE_DATA를 반환하고, 변수는 캐릭터로서, 널 캐릭터를 카운트하지 않은 스트링의 사이즈를 포함한다. 만약, lpClass 가 널이면, lpcbClass는 널일 수 있다.
WindowsNT의 경우, 만약 lpClass파라미터가 유효한 주소이지만, lpcbClass파라미터가 그렇지 않다면(예를 들어 널이면) 함수는 ERROR_INVALID_PARAMETER를 반환한다.
Windows95의 경우, 만약 lpClass 파라미터가 유효한 값이지만, lpcbClass파라미터는 유효하지 않다면, 함수는 ERROR_INVALID_PARAMETER 대신에 ERROR_SUCCESS를 반환한다.
다른 플랫폼들과 적합함을 확보하기 위해, lpcbClass가 함수를 호출하기 전에 유효한지를 조사해야 한다.
4) lpReserved: 이것은 널이어야 한다.
5) lpcSubKeys: 이것은 지명된 키에 의해서 포함된 하위키들의 숫자를 받는 변수에 대한 포인터이다. 이 파라미터는 널 일수 있다.
6) lpcbMaxSubKeyLen: 이것은 캐릭터로, 그 키중에 가장긴 이름을 가진 하위키의 길이를 받는 변수에 대한 포인터이다.
7) lpcbMaxClassLen: 이것은 캐릭터로, 하위키 클래스를 지명하는 가장긴 스트링의 길이를 받는 변수에 대한 포인터이다.
8) lpcValues: 이것은 그 키와 관련된 값들의 숫자를 받는 변수에 대한 포인터이다. 이 파라미터는 널 일수 있다.
9) lpcbMaxValueNameLen: 이것은 캐릭터로, 키의 가장긴 값의 이름의 길이를 받는 변수의 포인터이다. 그 반환된 카운트는 널 캐릭터를 제거한 것을 포함하지 않는다. 이 파라미터는 널 일수 있다.
10) lpcbMaxvalueLen: 이것은 바이트로, 키의 값중에 가장긴 데이터 요소의 길이를 받는 변수에 대한 포인터이다. 이 파라미터는 널 일수 있다.
11) lpcbSecurityDescriptor: 이것은 바이트로, 키의 보안 디스크립터의 길이를 받는 변수에 대한 포인터이다.
12) lpftLastWriteTime: 이것은 FILETIME 구조체에 대한 포인터이고, 이 파라미터는 널 일수 있다. WindowsNT의 경우, 이 함수는 키 또는 그것의 값 항목중에 수정된 마지막 시간을 조사하기 위한 FILETIME 구조체의 멤버들을 설정한다.
Windows95의 경우, 이 함수는 FILETIME 구조체의 멤버들을 0으로 설정한다. 이것은 시스템이, 키가 마지막으로 정보를 작성한 시간의 레지스트리 트랙을 유지하지 못하기 때문이다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: hKey에 의해서 식별된 키는 KEY_QUERY_VALUE (KEY_READ access includes KEY_QUERY_VALUE access) 로 열렸어야 한다.
정보
: winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다
참고
:Registry Overview, Registry Functions, FILETIME, RegDeleteKey, RegEnumKey, RegEnumKeyEx, RegEnumValue, RegQueryValue, RegQueryValueEx
RegQueryMultipleValues
이 함수는 열린 레지스트리 키와 관련이 있는 값 이름들의 리스트에 대한 데이터와 타입을 회수한다.
LONG RegQueryMultipleValues(
HKEY hKey, // 조회할 키의 핸들
PVALENT val_list, // 값 항목 구조들의 배열에 대한 포인터
DWORD num_vals, // 값 항목 구조들의 배열에 대한 사이즈
LPTSTR lpValueBuf, // 값 정보를 위한 버퍼에 대한 포인터
LPDWORD ldwTotsize // 값 버퍼의 크키에 대한 포인터
);
파라미터
1) hKey: 현재 열린 키에 대한 핸들 또는 아래의 미리 정의된 핸들값들 중의 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
2) val_list: 이것은 하나 또는 이상의 값 항목들을 묘사하는 VALENT 구조체들의 배열에 대한 포인터이다. 입력시에, 각 구조체의 멤버인 ve_valuename은 회수할 값의 이름에 대한 포인터를 포함해야 한다. 만약, 지명된 값중 어떤 것이 지명된 키에 존재하지 않는다면, 이 함수는 실행되지 않는다. 만약, 함수가 성공하면, 배열의 각 요소는 지명된 값들에 대한 정보를 포함한다.
3) num_vals: 이것은 val_list 배열의 요소들의 멤버를 지명한다.
4) lpValueBuf: 이것은 버퍼에 대한 포인터이고, 만약 함수가 성공한다면, 버퍼는 각 값에 대한 데이터를 받는다. 만약, lpValueBuf가 널이면, 함수는 성공을 반환하고, ldwTotsize는 요구된 버퍼의 사이즈를 바이트로 반환한다.
5) ldwTotsize: 이것은 바이트로, lpValueBuf파라미터에 이해 지목된 포인터의 사이즈를 지명하는 값에 대한 포인터이다. 만약, 함수가 성공한다면, ldwTotsize는 버퍼에 복사된 바이트의 수를 반환한다. 만약, 버퍼가 너무 작기 때문에 함수가 실패하면, ldwTotsiez는 바이트로 요구된 사이즈를 받는다.
반환값
: 만약, 함수가 성공한다면, ERROR_SUCCESS를 반환한다. 만약, 함수가 실패한다면, 반환되는 값은 아래와 같다.
ERROR_CANTREAD: 이것은 RegQueryMultipleValuem함수가 동적 키의 제공자에 액세스하거나 설명할수 없다는 것을 말한다.
ERROR_MORE_DATA: lpValueBuf에 의해 지적된 버퍼가 매우 작다. 이런 경우에는, ldwTotsize는 요구된 버퍼의 사이즈를 반환한다.
ERROR_TRANSFER_TOO_LONG: 요구된 데이터의 총 길이(val_list 배열과 ldwTotSize를 합한 크기) 가 시스템의 1메가 바이트제한 보다 더 크다.
주의
: RegQueryMultipleValues 함수는 애플리케이션이 하나 또는 이상의 정적 또는 동적의 키를 조회하는 것을 허가한다. 만약 타겟 키가 정적인 키이면, 시스템은 원자의 방식으로 모든 값을 제공한다. 이것은 제공자가 과도한 일련을 피하는 동안, 결과버퍼를 채우고, 버퍼에 모든 값들의 끊임없는 보기를 제공하는 일을 동시에 하는 것을 뜻한다. 제공자는 이 함수에 대한 원자적 호출동안, 총 출력데이터의 많아야 1메가바이트를 제공할수 있다.
RegQueryMultipleValues함수는 원거리에서도 지원된다. 즉, 함수에 전달된 hKey파라미터는 원거리 컴퓨터에서 조회할수 있다.
정보
: 이것은 WindowsCE에서는 제공되지 않고, winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다
참고
: Registry OverView, Registry Functions, VALENT
RegQueryValue
이 함수는 임의의 또는 명명되지 않은 지명된 레지스트리 키의 값과 관련된 데이터를 회수한다. 그 데이터는 널이 제거된 스트링이여야 한다. 이 함수는 Windows 버전 3.1과 적합하게 제공되었다. Win32기반의 애플리캐이션들은 RegQueryValueEx함수를 사용해야 한다.
LONG RegQueryValue(
HKEY hKey, // 조회할 키에대한 핸들
LPCTSTR lpSubKey, // 조회할 하위키의 이름
LPTSTR lpValue, // 반환된 스트링의 버퍼
PLONG lpcbValue // 반환된 스트링의 크기를 받음
);
파라미터
1) hKey: 이것은 현재 열려있는 키에 대한 핸들 또는 아래의 미리 정의된 핸들값들 중의 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
2) lpSubKey: 이것은 임의의 값이 회수된 hKey 파라미터의 하위 키의 이름을 포함하는 널을 제거한 스트링에 대한 포인터이다. 만약, 이 파라미터가 널 또는 빈 스트링에 대한 포인터이면, 함수는 hKey에 의해서 식별된 hKEy에 대한 임의의 값을 회수한다.
3) lpValue: 이것은 지명된 키의 임의의 값과 관련이 있는 널을 제거한 스트링을 받는 버퍼에 대한 포인터이다. 만약 lpValue가 널이면, lpcbValue는 널이 아니고, 함수는 ERROR_SUCCESS를 반환하고, lpcbValue에 의해 지목된 변수에서 데이터의 사이즈를 바이트로 저장한다. 이것은 애플리케이션이 값의 데이터에 대한 버퍼를 할당하는 가장 좋은 방법을 결정하게 한다.
4) lpcbValue: 이것은 lpValue파라미터에 의해 지목된 버퍼의 크기를 지명하는 변수에 대한 바이트의 포인터이다. 함수값이 반환될 때, 이 변수는 lpValue에서 복사된 널 캐릭터를 제거한 데이터의 사이즈를 포함한다.
만약, lpValue 파라미터에 의해 지명된 버퍼가 데이터를 갖기에 충분하지 않다면, 함수는 ERROR_MORE_DATA값을 반환하고, lpcbValue에 의해 지목된 변수에, 요구된 버퍼 크기를 바이트로 저장한다. 이런 경우에, lpcbValue에 반환되는 값은 스트링에서 널 캐릭터를 제거한 크기를 포함한다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: hKey 파라미터에 의해서 식별된 키는 KEY_QUERY_VALUE (KEY_READ access includes KEY_QUERY_VALUE access)로 열렸어야 한다. 만약 이 함수의 ANSI버전이(RegQueryValueA 함수를 명백하게 호출함에서 든지, 또는 windows.h 파일을 포함하기 전에 유니코드를 정의하지 않음으로 든지) 사용된다면, 이 함수는 lpValue 파라미터에 의해 지명된 버퍼에 그것을 복사하기 전에, 저장된 유니코드 스트링을 ANSI 스트링으로 전환한다.
정보
: 이것은 WindowsCE에서는 지원되지 않고, winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다
참고
:Registry Overview, Registry Functions, RegEnumKey, RegEnumKeyEx, RegEnumValue, RegQueryInfoKey, RegQueryValueEx, RegSetValue, RegSetValueEx
RegQueryValueEx
이 함수는 열린 레지스트리 키와 관련된 지적된 값 이름에 대한 타입과 데이터를 회수한다.
LONG RegQueryValueEx(
HKEY hKey, // 조회할 키의 핸들
LPTSTR lpValueName, // 조회할 값의 이름의 주소
LPDWORD lpReserved, // reserved
LPDWORD lpType, //값 타입에 대한 버퍼의 주소
LPBYTE lpData, // 데이터 버퍼의 주소
LPDWORD lpcbData // 데이터 버퍼 사이즈의 주소
);
파라미터
1) hKey: 이것은 현재 열려있는 키의 핸들 또는 아래의 미리 정의되어 있는 핸들값들 중 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
2) lpValueName: 이것은 조회할 값의 이름을 포함하는 널을 제거한 스트링에 대한 포인터이다. 만약, lpValueName 이 널 또는 빈 스트링이면, 그 함수는 키의 명명되지 않은 또는 임의의 값에 대한 타입 또는 데이터를 회수한다.
Windows95 또는 98의 경우: 모든 키는 초기에 데이터를 포함하지 않는 임의의 값을 가진다. Windows95에서, 디폴트 값 타입은 항상 REG_SZ 이다. Windows98에서, 키의 디폴트값은 초기에 REG_SZ이지만, RegSetValueEx함수는 다른 타입을 가진 디폴트 값을 지명한다.
WindowsNT의 경우: 키는 명명되지 않은 또는 디폴트값을 자동적으로 가지지 않는다. 명명되지 않는 값은 어떤 타입일수 있다.
3) lpReserved: 이것은 널 이어야 한다.
4) lpType: 이것은 지명된 값과 관련된 데이터의 타입을 받는 변수에 대한 포인터이다. 이 파라미터를 통해서 반환된 값은 아래의 값중 하나일 것이다.
REG_BINARY: 이것은 어떤 형태의 이진 데이터이다.
REG_DWORD: 32비트 숫자
REG_DWORD_LITTLE_ENDIAN: 32비트 little-endian 형태의 숫자이고, 이것은 REG_DWORD와 동등하다. little-endian 형태에서, 다중 바이트 값은 가장 낮은 바이트부터 가장 높은 바이트까지 메모리에 저장된다. 에를들어서, 값 0x12345678 은 (0x78 0x56 0x34 0x12) little-endian 형태로 저장된다. WindowsNT, Windows95, Windows98은 little-endian 컴퓨터 구조로 실행되도록 설계되었다. UNIX 와 같은 시스템에서, 사용자는 big-endian 구조로 컴퓨터에 연결할 것이다.
REG_DWORD_BIG_ENDIAN: 이것은 32비트 big-endian 형태이다. big-endian 형태에서, 다중 바이트 값은 가장 높은 바이트에서부터 가장 낮은 바이트까지 메모리에 저장된다. 예를 들어서, 값0x12345678은 (0x12 0x34 0x56 0x78) big-endian 형태로 저장된다.
REG_EXPAND_SZ: 이것은 환경변수(예를 들어, “ %PATH%”)에 확장되지 않은 레퍼런스들을 포함하는 널이 제거된 스트링이다. 그것은 유니코드 또는 ANSI 함수들을 사용할지 안할지에 의존해, 유니코드 또는 ANSI 스트링일 것이다. 환경변수 참조를 확장하기 위해 ExpandEnvironmentStrings 함수를 사용해라.
REG_LINK: 유니코드 심볼릭 링크
REG_MULTI_SZ: 두개의 널 캐릭터에 의해 제거되고, 널이 제거된 스트링의 배열
REG_NONE: 정의된 값 타입이 없다.
REG_RESOURCE_LIST: 디바이스 드라이버 리소스 리스트
REG_SZ: 널이 제거된 스트링, 그것은 유니코드 또는 ANSI 함수를 사용할지 안할지에 따라 유니코드 또는 ANSI 스트링일 것이다.
lpType 파라미터는 만약, 타입이 요구되지 않을경우, 널일 수 있다.
lpData: 이것은 값의 데이터를 받는 버퍼에 대한 포인터이다. 이 파라미터는 만약 데이터가 요구되지 않을 경우 널일 수 있다.
lpcbData: 이것은 lpData 파라미터에 의해 지적된 버퍼의 사이즈를 지명하는 변수에 대한 바이트로된 포인터이다. 만약, 그 데이터가 REG_SZ, REG_MULTI_SZ ,REG_EXPAND_SZ 타입을 가졌다면, lpcbData는 또한 널 캐릭터를 제거한 사이즈를 포함할 것이다. lpcbData 파라미터는 만약 lpData가 널일 경우에는 널일 수 있다. 만약 lpData 파라미터에 의해 지명된 버퍼가 데이터를 가지기에 충분히 크지 않다면, 그 함수는 ERROR_MORE_DATA값을 반환하고, lpcbData에 의해서 지적된 변수에서 요구된 버퍼의 사이즈를 바이트로 저장한다.
만약, lpData가 녈이고, lpcbData 가 널이 아니면, 함수는 ERROR_SUCCESS를 반환하고, lpcbData에 의해서 지적된 변수에서 데이터의 사이즈를 바이트로 저장한다. 이것은 애플리캐이션이 값의 데이터를 위한 버퍼를 배치하는 가장 좋은 방법을 결정하도록 한다.
WindowsNT의 경우: hKey는 HKEY_PERFORMANCE_DATA 를 지명하고, lpData 버퍼가 매우 작을 경우에는 RegQueryValueEx함수는 ERROR_MORE_DATA를 반환하지만, lpcbData는 요구된 버퍼의 사이즈를 반환하지 않는다. 이것은 동작 데이터의 사이즈가 처음 호출에서 다음 까지 변할수 있기 때문이다. 이런 경우에, 버퍼의 사이즈를 늘리고, RegQueryValueEx함수를, lpcbData파라미터에서 업데이트된 버퍼의 사이즈를 다시 전달하도록 호출하여야 한다. 함수가 실행될 때 까지 이 과정을 반복해라. lpcbData에 의해 반환된 값이 예상될 수 없기 때문에, 버퍼 사이즈의 트랙을 유지하기 위해 분리 변수을 유지할 필요가 있다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: hKey에 의해서 식별된 키는 KEY_QUERY_VALUE로 열렸어야 한다. 키를 열기 위해서, RegCreateKeyEx 또는 RegOpenKeyEx 함수를 사용해라. 만약, 값 데이터가 REG_SZ, REG_MULTI_SZ 또는 REG_EXPAND_SZ 타입 이거나, 함수의 ANSI 버전이(RegQueryValueExA 함수를 명확하게 호출해서든지, windows.h 파일을 포함하기 전에 유니코드를 정의 하지 않아서든지) 사용됬다면, 이 함수는 lpData에 의해서 지적된 버퍼에 그것을 복사 하기 전에, 저장된 유니코드 스트링을 ANSI 스트링으로 변환한다.
WindowsNT의 경우: HKEY_PERFORMANCE_DATA 핸들과 지명된 오브젝트의 값 스트링을 설정하기 위해 hKey를 가진 RegQueryValueEx 함수를 호출할 때, 때때로 반환된 데이터 구조는 요구되지 않은 오브젝트들을 가지고 있다. 놀라지 말아라. 이것은 보통의 일이다. RegQueryValueEx함수를 호출할 때, 당신은 반환된 데이터 구조에서 요구된 오브젝트를 볼수 있다는 것을 항상 에상해야 한다.
정보
: winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다
참고
: Registry Overview, Registry Functions, ExpandEnvironmentStrings, RegCreateKeyEx, RegEnumKey, RegEnumKeyEx, RegEnumValue, RegOpenKeyEx, RegQueryInfoKey, RegQueryValue
RegReplaceKey
이것은 시스템이 다음에 시작될 때, 키와 하위키가 새로운 파일에 저장된 값들을 가질 수 있도록 하기 위하여, 키 또는 그것의 하위키들을 돌려줄 파일을 어떤 파일로 교체하는 함수이다.
LONG RegReplaceKey(
HKEY hKey, // 키를 열 핸들
LPCTSTR lpSubKey, // 하위키의 이름의 주소
LPCTSTR lpNewFile, // 새로운 데이터를 가진 파일을 위한 파일 이름의 주소
LPCTSTR lpOldFile // 백업파일을 위한 파일 이름의 주소
);
파라미터
1) hKey: 이것은 현재 열려있는 키에 대한 핸들 또는 아래의 미리 정의된 핸들값 중의 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
2) lpSubKey: 이것은 하위키 와 값을 가진 키의 함수에 의해 대체된 키의 이름을 포함한 널을 제거한 스트링에 대한 포인터이다. 이 키는 hKey파라미터에 의해서 식별된 키의 하위키이어야 한다. 이 파라미터는 널일수 있다. 선택된 키는 벌집구조의 뿌리이어야 한다. 그것은 즉, HKEY_LOCAL_MACHINE 또는 HKEY_USERS의 직계 자손이여야 한다.
3) 이것은 레지스트리 정보를 가진 파일의 이름을 포함한 널이 제거된 스트링에 대한 포인터이다.
4) lpOldFile: 이것은 대체되어진 레지스트리 정보의 백업 복사본을 받는 파일이름을 포함하는 널을 제거한 스트링에 대한 포인터이다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: lpNewFile파라미터에 의해서 지명된 파일은 시스템이 다시 시작될 때 까지 열림을 유지한다. 만약, hKey가 RegConnectRegistry에 의해 반환된 핸들이라면, lpNewFile와 lpOldFile에서 지명된 경로는 떨어저 있는 컴퓨터와 관련이 있다. WindowsNT의 경우: 프로세스를 호출하는 것은 SE_RESTORE_NAME 특권을 가지고 있어야만 한다. 특권에 대한 더많은 정보를 원한다면 Privileges를 찾아봐라.
정보
: 이것은 WindowsCE에서는 지원되지 않고, winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다
참고
: Registry Overview, Registry Functions, RegConnectRegistry, RegDeleteKey, RegLoadKey, RegRestoreKey, RegSaveKey
RegRestoreKey
이 함수는 지명된 키에 대한 복사본과 지명된 파일에서 레지스트리 정보를 읽는다. 이 레지스트리 정보는 아마도 키의 형태 또는 다중 게층의 하위키들일 것이다.
LONG RegRestoreKey(
HKEY hKey, // 제 저장을 시작할 키에 대한 핸들
LPCTSTR lpFile, // 저장된 계층구조를 포함하는 파일 이름의 주소
DWORD dwFlags // 선택적인 플래그들
);
파라미터
1) hKey: 이것은 현재 열린 키에 대한 핸들 또는 아래의 미리 정의된 핸들값 중의 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
이 키와 그것의 자식 키들에 포함된 어떤 정보들은 lpFile 파라미터에 의해서 지적된 파일내의 정보에 의해서 덮어 쓰여진다.
2) lpFile: 이것은 레지스트리 정보를 가지고 있는 파일의 이름을 포함한 널을 제거한 스트링에 대한 포인터이다. 이 파일은 전형적으로 RegSaveKey 함수를 사용함에 의해서 생성된다.
3) dwFlags: 이것은 키가 변하기가 쉬운지를 조사하는 플래그를 지명한다.( 다음번에 시스템이 시작 될 때 까지 변하기 쉬운 키는 유효하다.) 이 파라미터는 선택적이다. 만약, 지명된 값이 없다면, 그 키는 변하기가 쉽지 않다. 이 파라미터는 REG_WHOLE_HIVE_VOLATILE 플래그 설정일수 있다. 주어진 키를 다시 저장하는 대신, 이 플래그는 새로운 것을 만들어, 변하기 쉬운 레지스트리 정보의 설정이 생성되도록 한다. (벌집구조는 레지스트리 정보의 큰 설정이고, 전형적으로 시스템의 부분에 대한 모든 적절한 정보를 포함한다. 예를 들어서, HKEY_LOCAL_MACHINE\Hardware 는 변하기 쉬운 벌집구조이다.) 만약, REG_WHOLE_HIVE_VOLATILE가 지명된다면, hKey 파라미터에 의해서 식별된 키는 HKEY_USERS 또는 HKEY_LOCAL_MACHINE 값 중 하나일 것이다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 만약 hKey파라미터의 어떤 하위키가 열려있다면, RegRestoreKey 함수가 실패한 것이다. 그 함수는 또한 프로세스를 호출하는 것이 SE_RESTORE_NAME 특권을 가지고 있지 않다면, 실패한 것이다. 더 많은 정보에 관해서는 Privileges를 찾아봐라.
이 함수는 파일의 최상위 키의 이름에 상관없이, 그 파일내의 최상위 키에 종속적인 키 와 값들을 가지고 있는 지명된 키 아래에 키와 값들을 재배치 한다.
예를 들어서, hKey는 lpFile 파라미터가 하위키 Y와 Z를 가진 키 X를 포함하는 파일을 지명할 동안, 하위키 B와 C를 가진 키 A를 식별할 것이다. RegRestoreKey 함수를 호출한후, 레지스트리는 하위키 Y와 Z를 가진 키 A를 포함할 것이다. A의 값 항목들은 X의 값 항목들에 의해 재배치 될것이다.
lpFile에 의해 지명된 파일에서, 그 새로운 정보는 그 키이름을 제외한, hKey파라미터에 의해서 지명된 키의 내용들을 덮어쓴다. 만약 hKey가 떨어져 있는 컴퓨터에서 키를 대표한다면, lpFile에 의해서 묘사된 경로는 떨어져 있는 컴퓨터와 관련이 있다.
정보
: 이것은 Windows와 WindowsCE에서는 지원되지 않고, winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다
참고
: Registry Overview, Registry Functions, RegDeleteKey, RegLoadKey, RegReplaceKey, RegSaveKey
RegSaveKey
이것은 지명된 키와 그것의 하위키들 그리고 값들을 새로운 파일에 저장하는 함수이다.
LONG RegSaveKey(
HKEY hKey, // 저장을 시작할 키의 핸들
LPCTSTR lpFile, // 저장할 파일이름의 주소
LPSECURITY_ATTRIBUTES lpSecurityAttributes // 보안 구조체의 주소
);
파라미터
1) hKey: 이것은 저장 동작이 시작될 곳에 있는 키에 대한 핸들 또는 아래의 미리 정의된 핸들 값들 중 하나를 지명한다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
2) lpFile: 이것은 저장된 특정키와 하위키가 속한 파일의 이름을 포함한 널을 제거한 스트링에 대한 포인터이다.
Windows95의 경우: RegSaveKey 함수는 긴 파일 이름을 지원하지 않는다. 긴 파일 이름을 가진 파일을 레지스트리 벌집구조에 저장하기 위해서, 먼저 짧은 파일 이름을 벌집 구조에 저장한후, 긴 파일이름에다 결과로 나온 파일을 다시 적는다.
만약, 파일이 이미 존재하면 함수는 ERROR_REGISTRY_IO_FAILED 에러를 내보내고 실행되지 않는다.
만약, 스트링이 경로를 포함하지 않는다면, 파일은 로컬 그리고 떨어져 있는 컴퓨터의 키를 위해 윈도우 뿌리 디렉토리에 생성된다. GetWindowsDirectory를 찾아봐라.
WindowsNT의 경우: 만약 파일이 이미 존재하면, 함수는 ERROR_ALREADY_EXISTS를 내보내고 실패한다. 만약, 스트링이 경로를 포함하지 않는다면, 그 파일은 로컬키를 위한 프로세스 호출의 현재 디렉토리에 생성되거나, 또는 %systemroot%\system32 디렉토리에 원거리 키에대해서 생성된다.
3) lpSecurityAttributes: WindowsNT의 경우에 이것은 새로운 파일을 위한 보아 디스크립터를 지명하는 SECURITY_ATTRIBUTES 구조체에 대한 포인터이다. 만약, lpSecurityAttributes가 널이면, 파일은 임의의 보안 디스크립터를 얻는다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 만약, hKey가 떨어져 있는 컴퓨터에서 키를 대표한다면, lpFile에 의해서 묘사된 경로는 떨어져 있는 컴퓨터와 관계가 있다. RegSaveKey함수는 단지 변하지 않는 키들을 저장한다. 그것은 변하는 키들은 저장하지 못한다. 키는 그것이 생성될 때 변할지 변하지 않을지가 결정된다. RegCreateKeyEx를 봐라.
당신은 RegLoadKey, RegReplaceKey, RegRestoreKey 함수를 연속적으로 호출할 때 ,RegSaveKey에 의해서 생성된 파일을 사용할 수 있다. 만약 RegSaveKey함수가 그것의 동작을 통한 부분 과정이 실패한다면, 그 파일은 손상될 것이고, 파일이 실패하것에 대해 RegLoadKey, RegReplaceKey, RegRegstoreKey를 연속으로 호출할 것이다.
WindowsNT의 경우: 그 새로운 파일은 도달 속성을 가진다. 프로세스의 호출은 SE_BACKUP_NAME 특권이 사용가능 해야만 한다. 특권에 대한 더 많은 정보는 Privileges를 봐라.
Windows95의 경우: 새로운 파일은 도달, 숨기기, 읽기전용, 그리고 시스템 속성을 갖는다.
정보
: WindowsCE에서는 지원되지 않고, winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다
참고
: Registry Overview, Registry Functions, RegCreateKeyEx, RegDeleteKey, RegLoadKey, RegReplaceKey, RegRestoreKey, SECURITY_ATTRIBUTES
RegSegKeySecurity
이 함수는 열린 레지스트리 키의 보안을 설정한다.
LONG RegSetKeySecurity(
HKEY hKey, // 설정할 키의 열린 핸들
SECURITY_INFORMATION SecurityInformation, // 디스크립터 내용
PSECURITY_DESCRIPTOR pSecurityDescriptor // 키에 대한 디스크립터의 주소
);
파라미터
1) hKey: 이것은 열린 키에 대한 보안 디스크립터를 식별한다.
2) SecurityInformation: 이것은 설정할 보안 디스크립터의 내용을 지명한다. 그 값은 아래의 플래그들의 조합이다.
OWNER_SECURITY_INFORMATION: 이것은 보안 식별자에 대한 키의 소유자를 설정한다. hKey 핸들은 WRITE_OWNER를 가졌거나, 프로세스 호출은 오브젝트의 소유자 또는 SE_TAKE_OWNERSHIP_NAME 특권이 사용가능해야만 한다.
GROUP_SECURITY_INFORMATION: 이것은 키의 SID 기본그룹을 설정한다. hKey핸들은 WRITE_OWNER을 가졌거나, 프로세스의 호출은 오브젝트의 소유자이어야만 한다.
DACL_SECURITY_INFORMATION: 이것은 키의 임의의 액세스 컨트롤 리스트를 설정한다. hKey 핸들은 WRITE_DAC을 가지던지, 프로세스를 호출하는 오브젝트의 소유자이어야만 한다.
SACL_SECURITY_INFORMATION: 이것은 키의 시스템 액세스 컨트롤 리스트를 설정한다. hKey 핸들은 ACCESS_SYSTEM_SECURITY 액세스를 가져야만 한다. 이 액세스르 얻는 더 좋은 방법은 호출자의 현재 액세스 토큰에서 SE_SECURITY_NAME특권이 사용 가능해야 하고, 또는 ACCESS_SYSTEM_SECURITY 액세스에 대한 핸들을 열고, 특권을 사용하지 못하게 해야만 한다.
3) pSecurityDescriptor: 이것은 지명된 키에 대한 설정을 위한 보안 속성들을 지명하는 SECURITY_DESCRIPTOR 구조체에 대한 포인터이다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 만약 hKey가 이미 정의된 키중의 하나라면, 미리 정의된 키는 RegCloseKey에 의해서 닫혀야 한다. 새로운 보안 정보는 미리 정의된 키가 언급된 다음 시간부터 유효하다는 것을 잊지마라.
정보
: Windows와 WindowsCE에서는 지원되지 않고, winreg.h에 정의되어 있고, advapi32.lib를 사용한다.
참고
: Low-Level Access-Control Overview, Low-Level Access Control Functions, RegCloseKey, RegDeleteKey, RegGetKeySecurity, SECURITY_INFORMATION
RegSetValue
이 함수는 임의의 또는 명명되지 않은 지명된 레지스트리 키에 대해서 데이터를 설정한다. 이 함수는 Windows3.1에 적합하게 제공된다. Win32기반의 애플리캐이션들은 RegSetValueEx함수를 사용하고, 어떤 데이터 타입의 이름 지어진 값의 수를 설정하도록 해야 한다.
LONG RegSetValue(
HKEY hKey, // 값을 설정할 키의 핸들
LPCTSTR lpSubKey, // 하위 이름의 주소
DWORD dwType, // 값의 타입
LPCTSTR lpData, // 값 데이터의 주소
DWORD cbData // 값 데이터의 크기
);
파라미터
1) hKey: 이것은 현재 열린키에 대한 핸들 도는 아래 미리 정의된 핸들값들 중 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
2) lpSubKey: 이것은 hKey파라미터의 하위키의 이름을 포함하는 널을 제거한 스트링에 대한 포인터이다. 그 함수는 지명된 하위키의 임의의 값을 설정한다. 만약, 이 파라미터가 널이거나, 빈 스트링에 대한 포인터라면, 함수는 hKey에 의해 식별된 키의 임의의 값을 설정한다.
3) dwType: 이것은 저장된 정보의 타입을 지명한다. 이 파라미터는 REG_SZ타입이어야만 한다. 다른 데이터 타임들을 저장하기 위해서, RegSetValueEx 함수를 사용해라.
4) lpData: 이거은 지명된 키의 임의의 값을 설정하는 데이터를 포함한 널을 제거한 스트링에 대한 포인터이다.
5) cbData: 이것은 널 캐릭터를 제거한 것을 포함하지 않고, lpData파라미터에 의해 지적된 스트링의 길이를 바이트로 지명한다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 만약 lpSubKey파라미터에 의해 지명된 키가 존재하지 않는다면, RegSetValue 함수는 그것을 생성한다. 값 길이는 사용가능한 메모리에 의해 제한된다. 긴 값(2048바이트 보다 큰값) 은 레지스트리에 저장된 파일이름들을 가지고 파일들로서 저장된다. 이것은 레지스트리 작용을 효과적으로 돕는다.
hKey파라미터에 의해서 식별된 키는 KEY_SET_VALUE 액세스로 열렸어야 한다. 그 키를 열기 위해서, RegCreateKeyEz 또는 RegOpenKeyEx함수를 사용해라. 만약, 이 함수의 ANSI번전이 사용된다면( RegSetValueKeyEx함수를 명백하게 호출해서 든지, 또는 windows.h 파일을 포함하기 전에 유니코드를 정의하지 않았던지 간에), lpData파라미터는 ANSI캐릭터 스틀링이어야 한다. 그 스트링은 그것이 레지스트리에 저장되기 전에 유니코드로 전환된다.
정보
: WindowsCE에서는 지원되지 않고, winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다
참고
: Registry Overview, Registry Functions, RegCreateKeyEx, RegFlushKey, RegOpenKeyEx, RegQueryValue, RegQueryValueEx, RegSetValueEx
RegSetValueEx
이 함수는 레지스트리 키 아래에 지명된 값의 데이터와 형을 설정한다.
LONG RegSetValueEx(
HKEY hKey, // 값을 설정할 핸들
LPCTSTR lpValueName, // 설정할 값의 이름
DWORD Reserved, // reserved
DWORD dwType, // 값 타입의 플래그
CONST BYTE *lpData, // 값 데이터의 주소
DWORD cbData // 값 데이터의 크기
);
파라미터
1) hKey: 이것은 현재 열려있는 키에 대한 핸들 또는 아래의 미리 정의된 핸들값들 중의 하나이다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95 and Windows 98: HKEY_DYN_DATA
2) lpValueName: 이것은 설정할 값의 이름을 포함하는 스트링에 대한 포인터이다. 만약, 이 이름을 가진 값이 이미 그 키에 존제하지 않는다면, 함수는 키에 그것을 추가한다. 만약, lpValueName이 널 또는 빈 스트링이라면, 함수는 키의 이름 없는 또는 임의의 값에 대한 형과 데이터를 설정한다.
Windows95 와 Window98의 경우: 원도우95에서는 키의 임의의 값의 형은 항상 REG_SZ이고, 그래서 dwType파라미터는 이름이 없는 값을 위해 REG_SZ을 지명한다. 윈도우98에서는 이름없는 값은 어떤 형일 수도 있다.
WindowsNT의 경우: 레지스트리 키는 임의의 값들을 갖지 못하지만, 그들은 어떤 타입일수 도 있는 이름 없는 값을 가진다.
3) Reserved: 이것은 0이어야 한다.
4) dwType: 이것은 값의 데이터로 저장된 정보의 형을 지명한다. 이 파라미터는 아래의 값중 하나일수 있다.
REG_BINARY: 이것은 어떤 형태의 이진 데이터이다.
REG_DWORD: 32비트 숫자
REG_DWORD_LITTLE_ENDIAN: 32비트 little-endian 형태의 숫자이고, 이것은 REG_DWORD와 동등하다. little-endian 형태에서, 다중 바이트 값은 가장 낮은 바이트부터 가장 높은 바이트까지 메모리에 저장된다. 에를들어서, 값 0x12345678 은 (0x78 0x56 0x34 0x12) little-endian 형태로 저장된다. WindowsNT, Windows95, Windows98은 little-endian 컴퓨터 구조로 실행되도록 설계되었다. UNIX 와 같은 시스템에서, 사용자는 big-endian 구조로 컴퓨터에 연결할 것이다.
REG_DWORD_BIG_ENDIAN: 이것은 32비트 big-endian 형태이다. big-endian 형태에서, 다중 바이트 값은 가장 높은 바이트에서부터 가장 낮은 바이트까지 메모리에 저장된다. 예를 들어서, 값0x12345678은 (0x12 0x34 0x56 0x78) big-endian 형태로 저장된다.
REG_EXPAND_SZ: 이것은 환경변수(예를 들어, “ %PATH%”)에 확장되지 않은 레퍼런스들을 포함하는 널이 제거된 스트링이다. 그것은 유니코드 또는 ANSI 함수들을 사용할지 안할지에 의존해, 유니코드 또는 ANSI 스트링일 것이다. 환경변수 참조를 확장하기 위해 ExpandEnvironmentStrings 함수를 사용해라.
REG_LINK: 유니코드 심볼릭 링크
REG_MULTI_SZ: 두개의 널 캐릭터에 의해 제거되고, 널이 제거된 스트링의 배열
REG_NONE: 정의된 값 타입이 없다.
REG_RESOURCE_LIST: 디바이스 드라이버 리소스 리스트
REG_SZ: 널이 제거된 스트링, 그것은 유니코드 또는 ANSI 함수를 사용할지 안할지에 따라 유니코드 또는 ANSI 스트링일 것이다.
lpType 파라미터는 만약, 타입이 요구되지 않을경우, 널일 수 있다.
lpData: 이것은 값의 데이터를 받는 버퍼에 대한 포인터이다. 이 파라미터는 만약 데이터가 요구되지 않을 경우 널일 수 있다.
lpcbData: 이것은 lpData 파라미터에 의해 지적된 버퍼의 사이즈를 지명하는 변수에 대한 바이트로된 포인터이다. 만약, 그 데이터가 REG_SZ, REG_MULTI_SZ ,REG_EXPAND_SZ 타입을 가졌다면, lpcbData는 또한 널 캐릭터를 제거한 사이즈를 포함할 것이다. lpcbData 파라미터는 만약 lpData가 널일 경우에는 널일 수 있다. 만약 lpData 파라미터에 의해 지명된 버퍼가 데이터를 가지기에 충분히 크지 않다면, 그 함수는 ERROR_MORE_DATA값을 반환하고, lpcbData에 의해서 지적된 변수에서 요구된 버퍼의 사이즈를 바이트로 저장한다.
만약, lpData가 녈이고, lpcbData 가 널이 아니면, 함수는 ERROR_SUCCESS를 반환하고, lpcbData에 의해서 지적된 변수에서 데이터의 사이즈를 바이트로 저장한다. 이것은 애플리캐이션이 값의 데이터를 위한 버퍼를 배치하는 가장 좋은 방법을 결정하도록 한다.
WindowsNT의 경우: hKey는 HKEY_PERFORMANCE_DATA 를 지명하고, lpData 버퍼가 매우 작을 경우에는 RegQueryValueEx함수는 ERROR_MORE_DATA를 반환하지만, lpcbData는 요구된 버퍼의 사이즈를 반환하지 않는다. 이것은 동작 데이터의 사이즈가 처음 호출에서 다음 까지 변할수 있기 때문이다. 이런 경우에, 버퍼의 사이즈를 늘리고, RegQueryValueEx함수를, lpcbData파라미터에서 업데이트된 버퍼의 사이즈를 다시 전달하도록 호출하여야 한다. 함수가 실행될 때 까지 이 과정을 반복해라. lpcbData에 의해 반환된 값이 예상될 수 없기 때문에, 버퍼 사이즈의 트랙을 유지하기 위해 분리 변수을 유지할 필요가 있다.
5) lpData: 이것은 지명된 값 이름으로 저장된 데이터를 포함하는 버퍼에 대하 포인터이다.
6) cpData: lpData파라미터에 의해서 지목된 정보의 사이즈를 바이트로 지명한다. 만약, 데이터가 REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ 의 형이라면, cbData는 널 캐릭터를 제거한 사이즈를 포함한다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 값 길이는 사용가능한 메모리에 의해 제한되어 있다. 긴 값들은 (2048바이트 이상) 레지스트리에 저장된 파일이름들을 가진 파일로서 저장되어야만 한다. 이것은 레지스트리 실행을 효과적으로 돕는다. 아이콘, 비트맵과 같은 애플리캐이션 요소와 실행가능한 파일은 레지스트리에 있어서는 안되고, 파일로서 저장되어야 한다. hKey파라미터에 의해서 식별된 키는 KEY_SET_VALUE액세스로 열렸어야 한다. 키를 열기 위해서 RegCreateKeyEx 또는 RegOpenKeyEx 함수를 사용해라.
만약, dwType 이 REG_SZ, REG_MULTI_SZ 또는 REG_EXPAND_SZ 형이고, 이 함수의 ANSI번전이 사용된다면( RegSetValueKeyExA함수를 명백하게 호출해서 든지, 또는 windows.h 파일을 포함하기 전에 유니코드를 정의하지 않았던지 간에), lpData파라미터는 ANSI캐릭터 스틀링이어야 한다. 그 스트링은 그것이 레지스트리에 저장되기 전에 유니코드로 전환된다
정보
: winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다.
참고
: Registry Overview, Registry Functions, RegCreateKeyEx, RegFlushKey, RegOpenKeyEx, RegQueryValue, RegQueryValueEx, RegSetValue
RegUnLoadKey
이것은 레지스트리로부터 지명된 키와 하위키들을 언로드하는 함수이다.
LONG RegUnLoadKey(
HKEY hKey, // 열린 키의 핸들
LPCTSTR lpSubKey // 언로드할 하위키 이름의 주소
);
파라미터
1) hKey: 이것은 언로드될 키를 지명한다. 이것은 미리 정의된 핸들값 또는 RegConnectRegistry 함수를 호출한것에 의해 반환된 핸들일 수 있다. 미린 정의된 핸들값은 아래와 같다.
HKEY_LOCAL_MACHINE
HKEY_USERS
2) lpSubKey: 이것은 언로드될 하위키의 이름을 포함하는 널을 제거한 스트링에 대한 포인터이다. lpSubKey파라미터에 의해 언급된 키는 RegLoadKey 함수를 사용해서 생성됬어야 한다.
반환값
: 만약 이 함수가 실행 된다면, 반환값은 ERROR_SUCCESS 이다. 실행되지 않는다면, WINERROR.H에 정의되어 있는 0이 아닌 에러코드를 반환한다. 일반적인 에러의 묘사를 얻기위해 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 가지고 있는 FormatMessage 함수를 사용할수 있다.
주의
: 이 함수는 레지스트리에서 벌집구조를 제거하지만, 레지스트리를 포함하는 파일을 수정하지는 않는다. 벌집구조는 키들, 하위키들, 그리고 레지스트리 계층의 가장 위에서 뿌리내린 값들의 분리된 몸체이다.
WindowsNT의 경우: 프로세스를 호출하는 것은 SE_RESTORE_NAME 특권을 가져야만 한다. 특권에 대한 더 많은 정보를 원한다면, Privileges를 봐라.
정보
: WindowsCE에서는 지원되지 않고, winreg.h에 정의되어 있고, advapi32.lib를 사용한다. WindowsNT 에서는 유니코드와 ANSI 버전을 사용한다.
참고
: Registry Overview, Registry Functions, RegConnectRegistry, RegDeleteKey, RegLoadKey, RegRestoreKey
레지스트리 구조체
VALENT
이 구조체는 레지스트리 값에 대한 정보를 포함하는 구조체이다. RegQueryMultipleValues 함수는 이 구조체를 사용한다.
typedef struct value_ent {
LPTSTR ve_valuename;
DWORD ve_valuelen;
DWORD ve_valueptr;
DWORD ve_type;
}VALENT;
멤버
1) ve_valuename: 이것은 널이 제거된 스트링에 대한 포인터이다. RegQueryMultipleValues 함수를 호출하기 전에, 회수할 값의 이름을 지적할 이 멤버를 설정해라.
2) ve_valuelen: 이것은 ve_valueptr에 지적된 데이터의 사이즈를 바이트로 지명한다.
3) ve_valueptr: 이것은 값 항목에 대한 데이터의 포인터이다. 이것은 RegQueryMultipleValues함수에 의해 채워진 lpValueBuf 버퍼에 반환된 값의 데이터에 대한 포인터이다.
4) ve_type: 이것은 값 항목에 대한 형 코드를 지명한다. 이 형 코드는 아래의 값들중 하나일수 있다.
REG_BINARY: 이것은 어떤 형태의 이진 데이터이다.
REG_DWORD: 32비트 숫자
REG_DWORD_LITTLE_ENDIAN: 32비트 little-endian 형태의 숫자이고, 이것은 REG_DWORD와 동등하다. little-endian 형태에서, 다중 바이트 값은 가장 낮은 바이트부터 가장 높은 바이트까지 메모리에 저장된다. 에를들어서, 값 0x12345678 은 (0x78 0x56 0x34 0x12) little-endian 형태로 저장된다. WindowsNT, Windows95, Windows98은 little-endian 컴퓨터 구조로 실행되도록 설계되었다. UNIX 와 같은 시스템에서, 사용자는 big-endian 구조로 컴퓨터에 연결할 것이다.
REG_DWORD_BIG_ENDIAN: 이것은 32비트 big-endian 형태이다. big-endian 형태에서, 다중 바이트 값은 가장 높은 바이트에서부터 가장 낮은 바이트까지 메모리에 저장된다. 예를 들어서, 값0x12345678은 (0x12 0x34 0x56 0x78) big-endian 형태로 저장된다.
REG_EXPAND_SZ: 이것은 환경변수(예를 들어, “ %PATH%”)에 확장되지 않은 레퍼런스들을 포함하는 널이 제거된 스트링이다. 그것은 유니코드 또는 ANSI 함수들을 사용할지 안할지에 의존해, 유니코드 또는 ANSI 스트링일 것이다. 환경변수 참조를 확장하기 위해 ExpandEnvironmentStrings 함수를 사용해라.
REG_LINK: 유니코드 심볼릭 링크
REG_MULTI_SZ: 두개의 널 캐릭터에 의해 제거되고, 널이 제거된 스트링의 배열
REG_NONE: 정의된 값 타입이 없다.
REG_RESOURCE_LIST: 디바이스 드라이버 리소스 리스트
REG_SZ: 널이 제거된 스트링, 그것은 유니코드 또는 ANSI 함수를 사용할지 안할지에 따라 유니코드 또는 ANSI 스트링일 것이다.
정보
: 이것은 WindowsCE에서는 지원되지 않으며, winreg.h에 정의되어 있다. 유니코드와 ANSI구조로서 정의 되었다.
참고
: Registry Overview, Registry Structures, RegQueryMultipleValues
'IT > 프로그래밍' 카테고리의 다른 글
Browser Helper Object [펌 blog.naver.com/jeonghj66] (2) | 2008.02.13 |
---|---|
CWinThread 로부터 CWnd 얻어오기, CWnd 에서 HWND 얻어오기 [펌 작성자 duragon] (0) | 2008.02.01 |
Tray Icon 을 이용한 예제 [작성자 신우창] (1) | 2008.01.25 |
스크립트 기반의 윈도 설치파일(installer) 제작도구인 NSIS [펌 작성자 마하나임(almdri1004)] (0) | 2008.01.22 |
CfileDialog에서 필터지정 (0) | 2008.01.22 |
- Total
- Today
- Yesterday
- 지루박멸연구센타
- 열정의 힘을 믿는다
- Le4rN TO Cr4cK
- 디버깅에관한모든것(DebugLab)
- sysinternals
- FoundStone
- hashtab
- 보안-coderant
- 디바이스드라이버 개발자 포럼
- dualpage.muz.ro
- osronline.com - 드라이버 관련 정보 사이트
- NtInternals - NativeAPI Refere…
- pcthreat - spyware 정보 제공
- rootkit.com - 루트킷 관련 정보
- www.ntinternals.net
- WINE CrossRef. - source.winehq…
- tuts4you
- hex-rays
- idapalace
- idefense
- immunityinc
- threatexpert
- hdp.null2root.org
- www.crackstore.com
- crackmes.de
- www.who.is
- www.cracklab.ru
- community.reverse-engineering.…
- video.reverse-engineering.net
- SnD
- 클레이 키위
- reversengineering.wordpress.co…
- www.openrce.org
- www.woodmann.com
- PEID.Plusins.BobSoft
- roxik.com/pictaps/
- regexlib.com
- spyware-browser.com
- www.usboffice.kr
- regulator
- www.txt2re.com
- ietab.mozdev.org
- zesrever.xstone.org
- www.heaventools.com/PE-file-he…
- www.heaventools.com
- www.innomp3.com
- 울지않는벌새
- exetools.com-forum
- exetools.com
- utf8 conv
- robtex - IP trace
- onsamehost - same IP sites
- JpopSuki
- jsunpack.jeek.org
- wepawet.iseclab.org
- www.jswiff.com
- www.hackeroo.com
- winesearcher.co.kr
- khpga.org
- malwareurl.com
- anubis.iseclab.org
- www.crummy.com-eautifulSoup
- malwarebytes.org/forums
- bbs.janmeng.com
- blackip.ustc.edu.cn
- eureka.cyber-ta.org
- exploit-db.com
- logrotate
- 주식
- 피봇
- INVOICE
- 매매가격지수
- 맥쿼리인프라
- 신한저축은행
- 사회간접자본
- ElasticSearch
- ROA
- 전세매매지수
- 실시간트래이딩
- Pivot
- PIR
- ubuntu
- O365
- hai
- 다올저축은행
- CriticalSection
- 시스템트래이딩
- 공공인프라
- 주택구매력지수
- 군함도
- 미국주식
- SBI저축은행
- 레고랜드
- ChatGPT
- 자동트래이딩
- systemd
- 주식트래이딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |