반응형
작업을 하다 보면 레지스트리가 가진 데이터의 갯수 ,하위키의 이름, 하위키의 갯수등등
정보를 알아와야 하는 경우가 있다.
이때 유용하게 사용할 수 있는 API함수가 있다. 바로 아래의 함수.
LONG RegQueryInfoKey(
HKEY hKey,
LPWSTR lpClass,
LPDWORD lpcbClass,
LPDWORD lpReserved,
LPDWORD lpcSubKeys,
LPDWORD lpcbMaxSubKeyLen,
LPDWORD lpcbMaxClassLen,
LPDWORD lpcValues,
LPDWORD lpcbMaxValueNameLen,
LPDWORD lpcbMaxValueLen,
LPDWORD lpcbSecurityDescriptor,
PFILETIME lpftLastWriteTime
);
각 함수의 인자에 대해 보자면..
인 수 |
설 명 |
hKey |
조사하고자 하는 키의 핸들 |
lpClass |
클래스 스트링 |
lpcbClass |
클래스 스트링 버퍼의 크기 |
lpReserved |
예약 |
lpcSubKeys |
서브키의 개수 |
lpcbMaxSubKeyLen |
가장 긴 이름의 서브키 길이 |
lpcbMaxClassLen |
가장 긴 이름의 클래스 길이 |
lpcValues |
값의 개수 |
lpcbMaxValueNameLen |
가장 긴 이름의 값 길이 |
lpcbMaxValueLen |
가장 긴 데이터의 길이 |
lpcbSecurityDescriptor |
보안 속성의 길이 |
lpftLastWriteTime |
최후 수정 시간 |
위의 API함수를 사용하면 위와 같은 정보를 알아올 수 있다^^
자 그럼 난 레지스트리가 가진 값이 몇개가 있는지 한번 간단히 해보면
HKEY hkey = HKEY_LOCAL_MACHINE;
long result, result2 ;
FILETIME FileTime;
DWORD dwValueNumber;
char regpath[] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\XXX";
result = RegOpenKeyEx(hkey , path, 0, KEY_QUERY_VALUE, &key );
if(result == ERROR_SUCCESS)
{
result2 = RegQueryInfoKey(key, NULL, 0, 0, NULL, NULL, NULL, &dwValueNumber, NULL, NULL, NULL, &FileTime);
if( result2 == ERROR_SUCCESS)
{
//dwValueNumber에 위에 테스트 경로에 지정해준 키의 값이 몇개가 있는지 알 수 있다.
}
}
그 이외에 필요한 정보가 필요하다면 NULL대신에 인자를 넣어 값을 얻어 올수 있다. ^^v
정보는 공유 되어야 한다!! 쭈욱~~!!
반응형
'Study > API' 카테고리의 다른 글
INI 파일 읽고, 쓰기 (제어 관련 API함수) (0) | 2012.03.20 |
---|---|
GetLastError() 함수 리턴값에 대한 정리 (0) | 2012.02.13 |
현재 로그인한 계정명 얻기, 현재 계정이 admin 계정인지 확인하는 방법 (0) | 2011.12.28 |
윈도우 64비트 구분 방법 (c, c++, api) 64비트 구분 함수 (0) | 2011.12.07 |
익스플로러 열어본 페이지 목록 삭제 및 열어본 페이지 목록의 갯수 세기 !! (0) | 2011.09.28 |
댓글