Programming/Windows&C#

[Windows/WinAPI] RegOpenKeyEx, RegEnumKeyEx, RegEnumValue

JMob 2013. 10. 21. 21:04
728x90
반응형
LONG WINAPI RegOpenKeyEx(
  _In_        HKEY hKey,                     -----①
  _In_opt_    LPCTSTR lpSubKey,              -----②
  _Reserved_  DWORD ulOptions,               -----③
  _In_        REGSAM samDesired,             -----④
  _Out_       PHKEY phkResult                -----⑤
);

함수 설명 :
지정된 레지스트리 키를 오픈합니다. 지정된 레지스트리 키가 존재하지 않는 경우는 키를 작성하지 않기 때문에 에러를 발생한다. 성공시 ERROR_SUCCESS(0)를 반환한다.

① HKey : 
오픈 되는 키의 핸들을 지정한다. 자세한건 RegCreateKeyEx 참고.

② lpSubKey :
오픈하는 서브 키의 이름을 나타내응 문자열의 주소를 지정한다.  자세한건 RegCreateKeyEx 참고.

③ ulOptions : 

예약값, 0을 넣어준다.


④ samDesired :

오픈하는 키의 핸들의 시큐리티 엑세스 마스크를 지정.  자세한건 RegCreateKeyEx 참고.


⑤ phkResult : 

오픈된 키의 핸들을 저장하지 위한 변수의 주소를 지정.




LONG WINAPI RegEnumKeyEx( _In_         HKEY hKey, -------① _In_         DWORD dwIndex, -------② _Out_        LPTSTR lpName, -------③ _Inout_      LPDWORD lpcName, -------④ _Reserved_   LPDWORD lpReserved, -------⑤ _Inout_      LPTSTR lpClass, -------⑥ _Inout_opt_  LPDWORD lpcClass, -------⑦ _Out_opt_    PFILETIME lpftLastWriteTime -------⑧ );



함수 설명 : 

지정된 레지스트리 키의 서브키를 열거한다. 불릴때마다 하나의 서브키에 관한 정보만 획득한다.


① hKey : 

오픈되고 있는 키의 핸들을 지정합니다. 이 핸들은 KEY_ENUMERATE_SUB_KEYS 엑세스를 가지고 있으면 안되다.


② dwIndex :

취득하는 서브 키의 0부터 시작되는 인덱스를 지정합니다. 


③ lpName :

서브 키의 이름을 격납하기 위한 버퍼의 주소를 지정한다. 서브 키의 이름만 카피하지 계층 전체를 카피하는것은 아니다.


④ lpcName :

lpName 파라미터로 나타내지는 버퍼의 아르바이트수 단위의 사이즈를 격납한 변수의 주소를 지정한다. 


⑤ lpReserced: 

예약된 값으로 0을 넣아야 한다. 


⑥ lpClass : 

서브 키의 클래스명을 격납하는 버퍼주소를 지정한다. 필요없을 경우 NULL을 지정해 줄 수 있다.


⑦ lpcClass : 

lpClass 파라미터로 나타내는 버퍼의 사이즈를 격납한 변수의 주소를 지정한다. 함수 사용시 plClass 파라미터의 버퍼에 카피된 사이즈가 이 변수에 격납 된다. plClass 파파미터에 NULL(0)을 지정했을 경우에는 이 값에 NULL(0)을 넣을 수 있다.


⑧ lpftLastWriteTime : 

서브키의 최종 기입 시간을 격납하기 위한 FILETIME 구조체의 주소를 지정한다.




LONG WINAPI RegEnumValue( _In_         HKEY hKey, --------① _In_         DWORD dwIndex, --------② _Out_        LPTSTR lpValueName, --------③ _Inout_      LPDWORD lpcchValueName, --------④ _Reserved_   LPDWORD lpReserved, --------⑤ _Out_opt_    LPDWORD lpType, --------⑥ _Out_opt_    LPBYTE lpData, --------⑦ _Inout_opt_  LPDWORD lpcbData --------⑧ );



함수 설명 : 

지정된 레지스트리 키가 가지는 값을 열거한다. 불릴때 마다 1개의 값의 이름과 대응하는 데이터를 취득한다.


① hKey :

현재 오픈되고 있는 키의 핸들을 지정한다. 이 핸들은 KEY_QUERY_VALU엑세스를 가지고 있어야 한다.


② dwIndex :

취들하는 값 0으로부터 시작되는 인덱스를 지정한다.


③ IpValueName :

값의 이름을 격납하기 위한 버퍼의 주소를 지정한다.


④ lpcchValuewName :

IpValueName 파라미터로 나타내는 버퍼의 사이즈를 저장한 변수의 주소를 인자로 넘겨준다. IpValueName파라미터의 버퍼에 카피된 문자열의 사이즈가 저장된다.


⑤ lpReserved : 

예약된 값 0을 넘겨준다.


⑥ lpType :

값의 데이터 타입의 종류를 저장한 변수 주소를 넘겨준다. 불필요한경우 NULL을 지정할 수 있다.



 값

유형 

 REG_BINARY

 바이터리 데이터

 REG_DWORD

 32 비트 숫자.

 REG_DWORD_LITTLE_ENDIAN

 리틀 엔디안 형식의 32 비트 숫자.

창은 리틀 엔디안 컴퓨터 아키텍처에서 실행되도록 설계되었습니다. 따라서,이 값은 Windows 헤더 파일에있는 REG_DWORD로 정의됩니다.

 REG_DWORD_BIG_ENDIAN

 빅 엔디안 형식의 32 비트 숫자.

 REG_EXPAND_SZ

 환경 변수 (예를 들어, "% 경로 %")로 확장되지 않은 참조를 포함 null로 끝나는 문자열입니다. 

 그것은 당신이 유니 코드 또는 ANSI 함수를 사용하는지 여부에 따라 유니 코드 또는 ANSI 문자열이됩니다. 

 REG_LINK

 호출에 의해 생성 된 심볼릭 링크의 대상 경로를 포함하는 null로 끝나는 유니 코드 문자열

 REG_MULTI_SZ

 빈 문자열 (\ 0)로 종료 null로 끝나는 문자열의 순서.

 REG_NONE

 데이터 타입을 지정하지 않음.

 REG_QWORD

 64비트 숫자

 REG_QWORD_LITTLE_ENDIAN

 리틀 엔디안 형식의 64 비트 숫자입니다.

 REG_SZ

 null로 끝나는 문자열입니다. 이것은 유니 코드 또는 ANSI 함수를 사용하는지 여부에 따라 하나 유니 코드 또는 ANSI 문자열이어야합니다.


⑦ lpData :

데이터 값을 저장하기위한 버퍼 주소를 지정한다. 필요없으면 NULL 가능


⑧ lpcbData :

데이터의 버퍼 크기를 저장할 변수 포인터를 넘겨준다. lpData가 NULL일경우 NULL값을 주면 된다.






728x90
반응형