ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • RegCreateKeyEx 사용방법
    Programming/WINAPI 2010. 1. 6. 01:36

    RegCreateKeyEx

     레지스트리키를 새로 만들어주는 함수입니다. 만약 생성하려는 키가 존재하는 경우 해당 키를 오픈합니다.

    LONG RegCreateKeyEx(
         HKEY        hKey
    ,  
         LPCTSTR   lpSubKey
    ,  
         DWORD     Reserved
    ,  
         LPTSTR     lpClass
    ,  
         DWORD     dwOptions
    ,  
         REGSAM    samDesired
    ,  
         LPSECURITY_ATTRIBUTES lpSecurityAttributes
    ,  
         PHKEY      phkResult
    ,  
         LPDWORD 
    lpdwDisposition
    );


    Parameters

    hKey

    생성할 키의 루트키. 또는 RegCreateKeyEx 나 RegOpenKeyEx 로 반환된 키.
    보통 아래의 루트키중 하나를 넣어줍니다.

    HKEY_CLASSES_ROOT
    HKEY_CURRENT_CONFIG
    HKEY_CURRENT_USER
    HKEY_LOCAL_MACHINE
    HKEY_USERS

    lpSubKey

    생성할 서브키(문자열)
    키이름에 백슬래쉬( \ )는 사용해선 안됩니다.

    Reserved
    예약된 인자. 반드시 0 을 주어야함.

    lpClass
    The user-defined class type of this key. (정확한 용도는 모르겠습니다.)
    해당 인자는 무시될수 있으며 또한 NULL값을 허용합니다. ( 보통 그냥 NULL을 줍니다. )


    dwOptions
    아래의 옵션값을 사용합니다.

    REG_OPTION_BACKUP_RESTORE ( 0x00000004L )
     : 이 옵션을 사용하면 samDesired는 무시됩니다.
    권한과 보안에 따라 키를 열고 백업 및 복구 등의 행동을 취하는 방법을 달리하는 것같습니다.
    (잘모르겠음)

    REG_OPEN_NON_VOLATILE ( 0x00000000L )
    : 정보를 파일에 기록합니다. ( 보통 이 옵션을 사용 )

    REG_OPTION_VOLATILE ( 0x00000001L )
    : 정보를 메모리에 기록합니다. ( 시스템종료시 기록이 지워집니다. )

    samDesired
    생성된 키에 주어지는 권한.
    그냥 모든 권한을 줄때는 KEY_ALL_ACCESS 를 인자로 줍니다.
    자세한 내용은 레지스트리 키 보안과 접근 권한을 참고하세요.
    lpSecurityAttributes
    SECURITY_ATTRIBUTES 구조체의 포인터. (필수 아님 , 보통 NULL을 준다.)
    자식프로세스 상속과 관련된 내용같은데 잘 모르겠음.

    phkResult
    생성된 키의 핸들포인터.
    키가 루트키가 아닌경우에는 RegCloseKey를 사용하여 키를 해제해야 합니다.

    lpdwDisposition
    DWORD의 포인터, 생성된 키의 상태를 알려줍니다.
    ( 필수아님, 보통 NULL을 줍니다.)

    반환되는 결과값은 아래와 같습니다.
    REG_CREATED_NEW_KEY ( 0x00000001L )
    : 새로 생성된 키
    REG_OPENED_EXISTING_KEY ( 0x00000002L )
    : 기존에 존재하던 키



    Return Values

    성공시 ERROR_SUCCESS 를 리턴합니다.
    실패시는 0 이 아닌값을 리턴하고 해당 에러코드는 Winerror.h에 정의 되어 있습니다.


    Requirements
    Client Windows 2000 Professional 이상
    Server Windows 2000 Server 이상
    Header

    Declared in Winreg.h; include Windows.h.

    Library

    Link to Advapi32.lib.

    DLL Requires Advapi32.dll.
    Unicode

    Implemented as RegCreateKeyExW (Unicode) and RegCreateKeyExA (ANSI)



    Example Code

    // HKLM/Software/Test/test 키를 생성하는 예제 
    // (* Windows Vista이상 또는 XP일반사용자 계정인 경우에는 키생성에 실패합니다.)
    
    // 새로 생성할 키의 핸들
    HKEY newKey;
    // RegCreateKeyEx 수행결과
    LONG ret = 0;
    
    ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE, 
                                  "Software\\Test\\test", 
                                  0, 
                                  NULL, 
                                  REG_OPTION_NON_VOLATILE,
                                  KEY_CREATE_SUB_KEY,
                                  NULL,
                                  &newKey,
                                  NULL);
    
    if(ret == ERROR_SUCCESS )
    {
          // 키생성 성공
    }
    else
    {
          // 키생성 실패
    }
    
    
    

    최종갱신 : 2010.07.31

    [프로그래밍/WIN32API] - RegOpenKeyEx 사용방법

Designed by Tistory.