본문 바로가기
Study/API

레지스트리에 있는 값의 갯수 가져오기 (레지스트리의 정보를 알아보자)

by 뿡뿡대마왕 2012. 1. 3.
반응형

작업을 하다 보면 레지스트리가 가진 데이터의 갯수 ,하위키의 이름, 하위키의 갯수등등 
정보를 알아와야 하는 경우가 있다.

이때 유용하게 사용할 수 있는 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

정보는 공유 되어야 한다!! 쭈욱~~!!



반응형

댓글