다음을 통해 공유


CRegKey 수업

이 클래스는 시스템 레지스트리의 항목을 조작하는 메서드를 제공합니다.

Important

이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.

구문

class CRegKey

멤버

공용 생성자

속성 설명
CRegKey::CRegKey 생성자입니다.
CRegKey::~CRegKey 소멸자입니다.

공용 메서드

이름 설명
CRegKey::Attach 이 메서드를 호출하여 멤버 핸들을 .로 설정하여 개체에 HKEY CRegKeym_hKey 연결합니다 hKey.
CRegKey::Close 이 메서드를 호출하여 멤버 핸들을 m_hKey 해제하고 으로 NULL설정합니다.
CRegKey::Create 지정된 키가 하위 키로 존재하지 않는 경우 이 메서드를 호출하여 지정한 키를 hKeyParent만듭니다.
CRegKey::DeleteSubKey 레지스트리에서 지정된 키를 제거하려면 이 메서드를 호출합니다.
CRegKey::DeleteValue 에서 값 필드를 m_hKey제거하려면 이 메서드를 호출합니다.
CRegKey::Detach 개체에서 멤버 핸들을 m_hKey 분리하고 로 설정 m_hKey 하려면 이 메서드를 CRegKey 호출합니다NULL.
CRegKey::EnumKey 열려 있는 레지스트리 키의 하위 키를 열거하려면 이 메서드를 호출합니다.
CRegKey::Flush 열려 있는 레지스트리 키의 모든 특성을 레지스트리에 쓰려면 이 메서드를 호출합니다.
CRegKey::GetKeySecurity 열린 레지스트리 키를 보호하는 보안 설명자의 복사본을 검색하려면 이 메서드를 호출합니다.
CRegKey::NotifyChangeKeyValue 이 메서드는 열려 있는 레지스트리 키의 특성 또는 내용에 대한 변경 내용을 호출자에게 알깁니다.
CRegKey::Open 이 메서드를 호출하여 지정된 키를 열고 이 키의 핸들로 설정합니다 m_hKey .
CRegKey::QueryBinaryValue 이 메서드를 호출하여 지정된 값 이름의 이진 데이터를 검색합니다.
CRegKey::QueryDWORDValue 지정된 값 이름의 데이터를 검색 DWORD 하려면 이 메서드를 호출합니다.
CRegKey::QueryGUIDValue 지정된 값 이름에 대한 GUID 데이터를 검색하려면 이 메서드를 호출합니다.
CRegKey::QueryMultiStringValue 지정된 값 이름에 대한 다중 문자열 데이터를 검색하려면 이 메서드를 호출합니다.
CRegKey::QueryQWORDValue 지정된 값 이름의 데이터를 검색 QWORD 하려면 이 메서드를 호출합니다.
CRegKey::QueryStringValue 지정된 값 이름의 문자열 데이터를 검색하려면 이 메서드를 호출합니다.
CRegKey::QueryValue 지정된 값 필드의 데이터를 검색하려면 이 메서드를 호출합니다 m_hKey. 이 메서드의 이전 버전은 더 이상 지원되지 않으며 로 ATL_DEPRECATED표시됩니다.
CRegKey::RecurseDeleteKey 레지스트리에서 지정된 키를 제거하고 하위 키를 명시적으로 제거하려면 이 메서드를 호출합니다.
CRegKey::SetBinaryValue 레지스트리 키의 이진 값을 설정하려면 이 메서드를 호출합니다.
CRegKey::SetDWORDValue 레지스트리 키의 DWORD 값을 설정하려면 이 메서드를 호출합니다.
CRegKey::SetGUIDValue 레지스트리 키의 GUID 값을 설정하려면 이 메서드를 호출합니다.
CRegKey::SetKeySecurity 레지스트리 키의 보안을 설정하려면 이 메서드를 호출합니다.
CRegKey::SetKeyValue 지정된 키의 지정된 값 필드에 데이터를 저장하려면 이 메서드를 호출합니다.
CRegKey::SetMultiStringValue 레지스트리 키의 다중 문자열 값을 설정하려면 이 메서드를 호출합니다.
CRegKey::SetQWORDValue 레지스트리 키의 QWORD 값을 설정하려면 이 메서드를 호출합니다.
CRegKey::SetStringValue 레지스트리 키의 문자열 값을 설정하려면 이 메서드를 호출합니다.
CRegKey::SetValue 지정된 값 필드에 데이터를 저장하려면 이 메서드를 호출합니다 m_hKey. 이 메서드의 이전 버전은 더 이상 지원되지 않으며 로 ATL_DEPRECATED표시됩니다.

Public 연산자

속성 설명
CRegKey::operator HKEY 개체를 CRegKey .로 변환합니다 HKEY.
CRegKey::operator = 대입 연산자입니다.

공용 데이터 멤버

속성 설명
CRegKey::m_hKey 개체와 연결된 레지스트리 키의 핸들을 CRegKey 포함합니다.
CRegKey::m_pTM 개체에 대한 CAtlTransactionManager 포인터

설명

CRegKey 에서는 시스템 레지스트리에서 키와 값을 만들고 삭제하는 메서드를 제공합니다. 레지스트리에는 소프트웨어 버전 번호, 설치된 하드웨어의 논리적-물리적 매핑 및 COM 개체와 같은 시스템 구성 요소에 대한 설치별 정의 집합이 포함되어 있습니다.

CRegKey 는 지정된 컴퓨터의 시스템 레지스트리에 프로그래밍 인터페이스를 제공합니다. 예를 들어 특정 레지스트리 키를 열려면 .를 호출 CRegKey::Open합니다. 데이터 값을 검색하거나 수정하려면 각각 호출 CRegKey::QueryValue 하거나 CRegKey::SetValue수정합니다. 키를 닫려면 .를 호출 CRegKey::Close합니다.

키를 닫으면 해당 레지스트리 데이터가 하드 디스크에 기록(플러시)됩니다. 이 프로세스는 몇 초 정도 걸릴 수 있습니다. 애플리케이션이 명시적으로 레지스트리 데이터를 하드 디스크에 기록해야 하는 경우 Win32 함수를 호출할 RegFlushKey 수 있습니다. 그러나 RegFlushKey 많은 시스템 리소스를 사용하며 반드시 필요한 경우에만 호출해야 합니다.

Important

호출자가 레지스트리 위치를 지정할 수 있도록 허용하는 모든 메서드는 신뢰할 수 없는 데이터를 읽을 수 있습니다. 사용하는 RegQueryValueEx 메서드는 이 함수가 null로 끝나는 문자열을 명시적으로 처리하지 않는다는 점을 고려해야 합니다. 두 조건 모두 호출 코드에서 확인해야 합니다.

요구 사항

머리글: atlbase.h

CRegKey::Attach

이 메서드를 호출하여 멤버 핸들hKeyCRegKey HKEY .로 설정하여 개체에 m_hKey 연결합니다.

void Attach(HKEY hKey) throw();

매개 변수

hKey
레지스트리 키의 핸들입니다.

설명

Attach 이 아닌 경우 m_hKey 어설션NULL됩니다.

CRegKey::Close

이 메서드를 호출하여 멤버 핸들을 m_hKey 해제하고 으로 NULL설정합니다.

LONG Close() throw();

Return Value

성공하면 반환하고 ERROR_SUCCESS, 그렇지 않으면 오류 값을 반환합니다.

CRegKey::Create

지정된 키가 하위 키로 존재하지 않는 경우 이 메서드를 호출하여 지정한 키를 hKeyParent만듭니다.

LONG Create(
    HKEY hKeyParent,
    LPCTSTR lpszKeyName,
    LPTSTR lpszClass = REG_NONE,
    DWORD dwOptions = REG_OPTION_NON_VOLATILE,
    REGSAM samDesired = KEY_READ | KEY_WRITE,
    LPSECURITY_ATTRIBUTES lpSecAttr = NULL,
    LPDWORD lpdwDisposition = NULL) throw();

매개 변수

hKeyParent
열린 키의 핸들입니다.

lpszKeyName
만들거나 열 키의 이름을 지정합니다. 이 이름은 .의 hKeyParent하위 키여야 합니다.

lpszClass
만들거나 열 키의 클래스를 지정합니다. 기본값은 REG_NONE.

dwOptions
키에 대한 옵션입니다. 기본값은 REG_OPTION_NON_VOLATILE입니다. 가능한 값 및 설명 목록은 Windows SDK를 참조 RegCreateKeyEx 하세요.

samDesired
키에 대한 보안 액세스입니다. 기본값은 KEY_READ | KEY_WRITE입니다. 가능한 값 및 설명 목록은 다음을 참조하세요 RegCreateKeyEx.

lpSecAttr
자식 프로세스에서 SECURITY_ATTRIBUTES 키 핸들을 상속할 수 있는지 여부를 나타내는 구조체에 대한 포인터입니다. 기본적으로 이 매개 변수는 NULL 핸들을 상속할 수 없다는 의미입니다.

lpdwDisposition
[out] 키가NULL 아닌 경우(키가 존재하지 않았고 만들어진 경우) 또는 REG_OPENED_EXISTING_KEY (키가 존재하고 열려 있는 경우) 검색 REG_CREATED_NEW_KEY 합니다.

Return Value

성공하면 키를 반환 ERROR_SUCCESS 하고 엽니다. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

Create 는 멤버를 m_hKey 이 키의 핸들로 설정합니다.

CRegKey::CRegKey

생성자입니다.

CRegKey() throw();
CRegKey(CRegKey& key) throw();
explicit CRegKey(HKEY hKey) throw();
CRegKey(CAtlTransactionManager* pTM) throw();

매개 변수

key
CRegKey 개체에 대한 참조입니다.

hKey
레지스트리 키에 대한 핸들입니다.

pTM
개체에 대한 CAtlTransactionManager 포인터

설명

CRegKey 개체를 만듭니다. 개체는 기존 CRegKey 개체 또는 핸들에서 레지스트리 키로 만들 수 있습니다.

CRegKey::~CRegKey

소멸자입니다.

~CRegKey() throw();

설명

소멸자가 해제됩니다.m_hKey

CRegKey::DeleteSubKey

레지스트리에서 지정된 키를 제거하려면 이 메서드를 호출합니다.

LONG DeleteSubKey(LPCTSTR lpszSubKey) throw();

매개 변수

lpszSubKey
삭제할 키의 이름을 지정합니다. 이 이름은 .의 m_hKey하위 키여야 합니다.

Return Value

성공하면 ERROR_SUCCESS를 반환합니다. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

DeleteSubKey 는 하위 키가 없는 키만 삭제할 수 있습니다. 키에 하위 키가 있는 경우 대신 호출 RecurseDeleteKey 합니다.

CRegKey::DeleteValue

에서 값 필드를 m_hKey제거하려면 이 메서드를 호출합니다.

LONG DeleteValue(LPCTSTR lpszValue) throw();

매개 변수

lpszValue
제거할 값 필드를 지정합니다.

Return Value

성공하면 ERROR_SUCCESS를 반환합니다. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

CRegKey::Detach

개체에서 멤버 핸들을 m_hKey 분리하고 로 설정 m_hKey 하려면 이 메서드를 CRegKey 호출합니다NULL.

HKEY Detach() throw();

Return Value

개체와 연결된 HKEY입니다 CRegKey .

CRegKey::EnumKey

열려 있는 레지스트리 키의 하위 키를 열거하려면 이 메서드를 호출합니다.

LONG EnumKey(
    DWORD iIndex,
    LPTSTR pszName,
    LPDWORD pnNameLength,
    FILETIME* pftLastWriteTime = NULL) throw();

매개 변수

iIndex
하위 키 인덱스입니다. 이 매개 변수는 첫 번째 호출에 대해 0이어야 하고 후속 호출에 대해 증가해야 합니다.

pszName
종료 null 문자를 포함하여 하위 키의 이름을 받는 버퍼에 대한 포인터입니다. 하위 키의 이름만 전체 키 계층이 아니라 버퍼에 복사됩니다.

pnNameLength
매개 변수로 지정된 버퍼의 크기(in TCHARs)를 지정하는 변수에 대한 pszName 포인터입니다. 이 크기에는 종료 null 문자가 포함되어야 합니다. 메서드가 반환될 때 가리키는 pnNameLength 변수에는 버퍼에 저장된 문자 수가 포함됩니다. 반환되는 개수에는 종료 null 문자가 포함되지 않습니다.

pftLastWriteTime
열거된 하위 키가 마지막으로 기록된 시간을 받는 변수에 대한 포인터입니다.

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

하위 키를 열거하려면 인덱스 0을 사용하여 호출 CRegKey::EnumKey 합니다. 인덱스 값을 증분하고 메서드가 반환 ERROR_NO_MORE_ITEMS될 때까지 반복합니다. 자세한 내용은 Windows SDK를 참조 RegEnumKeyEx 하세요.

CRegKey::Flush

열려 있는 레지스트리 키의 모든 특성을 레지스트리에 쓰려면 이 메서드를 호출합니다.

LONG Flush() throw();

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

자세한 내용은 Windows SDK를 참조 RegEnumFlush 하세요.

CRegKey::GetKeySecurity

열린 레지스트리 키를 보호하는 보안 설명자의 복사본을 검색하려면 이 메서드를 호출합니다.

LONG GetKeySecurity(
    SECURITY_INFORMATION si,
    PSECURITY_DESCRIPTOR psd,
    LPDWORD pnBytes) throw();

매개 변수

si
SECURITY_INFORMATION 요청된 보안 정보를 나타내는 값입니다.

psd
요청된 보안 설명자의 복사본을 수신하는 버퍼에 대한 포인터입니다.

pnBytes
로 가리키는 psd버퍼의 크기(바이트)입니다.

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 0이 아닌 오류 코드가 정의됩니다 WINERROR.H.

설명

자세한 내용은 RegGetKeySecurity를 참조하세요.

CRegKey::m_hKey

개체와 연결된 레지스트리 키의 핸들을 CRegKey 포함합니다.

HKEY m_hKey;

CRegKey::m_pTM

CAtlTransactionManager 개체에 대한 포인터입니다.

CAtlTransactionManager* m_pTM;

설명

CRegKey::NotifyChangeKeyValue

이 메서드는 열려 있는 레지스트리 키의 특성 또는 내용에 대한 변경 내용을 호출자에게 알깁니다.

LONG NotifyChangeKeyValue(
    BOOL bWatchSubtree,
    DWORD dwNotifyFilter,
    HANDLE hEvent,
    BOOL bAsync = TRUE) throw();

매개 변수

bWatchSubtree
지정된 키와 모든 하위 키의 변경 내용을 보고할지 또는 지정된 키에서만 보고할지를 나타내는 플래그를 지정합니다. 이 매개 변수인 경우 메서드는 TRUE키와 해당 하위 키의 변경 내용을 보고합니다. 매개 변수인 FALSE경우 메서드는 키에서만 변경 내용을 보고합니다.

dwNotifyFilter
보고해야 하는 변경 내용을 제어하는 플래그 집합을 지정합니다. 이 매개 변수는 다음 값의 조합일 수 있습니다.

의미
REG_NOTIFY_CHANGE_NAME 하위 키가 추가되거나 삭제되면 호출자에게 알립니다.
REG_NOTIFY_CHANGE_ATTRIBUTES 보안 설명자 정보와 같은 키 특성의 변경 내용을 호출자에게 알립니다.
REG_NOTIFY_CHANGE_LAST_SET 호출자에게 키 값에 대한 변경 내용을 알립니다. 여기에는 값 추가 또는 삭제 또는 기존 값 변경이 포함될 수 있습니다.
REG_NOTIFY_CHANGE_SECURITY 호출자에게 키의 보안 설명자에 대한 변경 내용을 알립니다.

hEvent
이벤트에 대한 핸들. 매개 변수인 bAsync 경우 메서드가 TRUE즉시 반환되고 이 이벤트를 신호로 표시하여 변경 내용이 보고됩니다. 이 FALSEhEventbAsync 무시됩니다.

bAsync
메서드가 변경 내용을 보고하는 방법을 나타내는 플래그를 지정합니다. 이 매개 변수인 경우 메서드는 TRUE즉시 반환되고 지정된 이벤트에 신호를 전송하여 변경 내용을 보고합니다. 이 매개 변수인 경우 FALSE변경이 발생할 때까지 메서드가 반환되지 않습니다. 유효한 이벤트를 지정하지 않으면 hEvent 매개 변수가 bAsyncTRUE수 없습니다.

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

참고 항목

이 메서드는 지정된 키가 삭제된 경우 호출자에게 알리지 않습니다.

자세한 내용 및 샘플 프로그램은 다음을 참조하세요 RegNotifyChangeKeyValue.

CRegKey::Open

이 메서드를 호출하여 지정된 키를 열고 이 키의 핸들로 설정합니다 m_hKey .

LONG Open(
    HKEY hKeyParent,
    LPCTSTR lpszKeyName,
    REGSAM samDesired = KEY_READ | KEY_WRITE) throw();

매개 변수

hKeyParent
열린 키의 핸들입니다.

lpszKeyName
만들거나 열 키의 이름을 지정합니다. 이 이름은 .의 hKeyParent하위 키여야 합니다.

samDesired
키에 대한 보안 액세스입니다. 기본값은 KEY_ALL_ACCESS입니다. 가능한 값 및 설명 목록은 Windows SDK를 참조 RegCreateKeyEx 하세요.

Return Value

성공하면 반환됩니다. ERROR_SUCCESS그렇지 않으면 0이 아닌 오류 값이 정의됩니다 WINERROR.H.

설명

매개 변수가 lpszKeyName 빈 문자열 Open 이거나 NULL 가리키는 경우 식별된 hKeyParent키의 새 핸들을 열지만 이전에 연 핸들은 닫지 않습니다.

달리 CRegKey::Create지정된 Open 키가 없는 경우 해당 키를 만들지 않습니다.

CRegKey::operator HKEY

개체를 CRegKey .로 변환합니다 HKEY.

operator HKEY() const throw();

CRegKey::operator =

대입 연산자입니다.

CRegKey& operator= (CRegKey& key) throw();

매개 변수

key
복사할 키입니다.

Return Value

새 키에 대한 참조를 반환합니다.

설명

이 연산자는 key 현재 개체에서 분리하고 대신 개체에 CRegKey 할당합니다.

CRegKey::QueryBinaryValue

이 메서드를 호출하여 지정된 값 이름의 이진 데이터를 검색합니다.

LONG QueryBinaryValue(
    LPCTSTR pszValueName,
    void* pValue,
    ULONG* pnBytes) throw();

매개 변수

pszValueName
쿼리할 NULL값의 이름을 포함하는 -terminated 문자열에 대한 포인터입니다.

pValue
값의 데이터를 받는 버퍼에 대한 포인터입니다.

pnBytes
매개 변수가 가리키는 버퍼의 크기(바이트)를 지정하는 변수에 대한 pValue 포인터입니다. 메서드가 반환될 때 이 변수에는 버퍼에 복사된 데이터의 크기가 포함됩니다.

Return Value

메서드가 성공 ERROR_SUCCESS 하면 반환됩니다. 메서드가 값을 읽지 못하면 에 정의된 0이 아닌 오류 코드가 반환됩니다 WINERROR.H. 참조된 데이터가 형식 REG_BINARYERROR_INVALID_DATA 이 아니면 반환됩니다.

설명

이 메서드는 올바른 형식의 RegQueryValueEx 데이터를 사용하고 반환되었는지 확인합니다. 자세한 내용은 RegQueryValueEx를 참조하세요.

Important

이 메서드를 사용하면 호출자가 신뢰할 수 없는 데이터를 읽을 수 있는 레지스트리 위치를 지정할 수 있습니다. 또한 이 메서드에서 RegQueryValueEx 사용하는 함수는 null로 끝나는 문자열을 명시적으로 처리하지 않습니다. 두 조건 모두 호출 코드에서 확인해야 합니다.

CRegKey::QueryDWORDValue

지정된 값 이름의 데이터를 검색 DWORD 하려면 이 메서드를 호출합니다.

LONG QueryDWORDValue(
    LPCTSTR pszValueName,
    DWORD& dwValue) throw();

매개 변수

pszValueName
쿼리할 NULL값의 이름을 포함하는 -terminated 문자열에 대한 포인터입니다.

dwValue
를 수신하는 버퍼에 대한 포인터입니다 DWORD.

Return Value

메서드가 성공 ERROR_SUCCESS 하면 반환됩니다. 메서드가 값을 읽지 못하면 에 정의된 0이 아닌 오류 코드가 반환됩니다 WINERROR.H. 참조된 데이터가 형식 REG_DWORDERROR_INVALID_DATA 이 아니면 반환됩니다.

설명

이 메서드는 올바른 형식의 RegQueryValueEx 데이터를 사용하고 반환되었는지 확인합니다. 자세한 내용은 RegQueryValueEx를 참조하세요.

Important

이 메서드를 사용하면 호출자가 신뢰할 수 없는 데이터를 읽을 수 있는 레지스트리 위치를 지정할 수 있습니다. 또한 이 메서드에서 RegQueryValueEx 사용하는 함수는 null로 끝나는 문자열을 명시적으로 처리하지 않습니다. 두 조건 모두 호출 코드에서 확인해야 합니다.

CRegKey::QueryGUIDValue

지정된 값 이름에 대한 GUID 데이터를 검색하려면 이 메서드를 호출합니다.

LONG QueryGUIDValue(
    LPCTSTR pszValueName,
    GUID& guidValue) throw();

매개 변수

pszValueName
쿼리할 NULL값의 이름을 포함하는 -terminated 문자열에 대한 포인터입니다.

guidValue
GUID를 받는 변수에 대한 포인터입니다.

Return Value

메서드가 성공 ERROR_SUCCESS 하면 반환됩니다. 메서드가 값을 읽지 못하면 에 정의된 0이 아닌 오류 코드가 반환됩니다 WINERROR.H. 참조된 데이터가 유효한 GUID ERROR_INVALID_DATA 가 아니면 반환됩니다.

설명

이 메서드는 을 사용하여 문자열을 사용하고 CRegKey::QueryStringValue CLSIDFromStringGUID로 변환합니다.

Important

이 메서드를 사용하면 호출자가 신뢰할 수 없는 데이터를 읽을 수 있는 레지스트리 위치를 지정할 수 있습니다.

CRegKey::QueryMultiStringValue

지정된 값 이름에 대한 다중 문자열 데이터를 검색하려면 이 메서드를 호출합니다.

LONG QueryMultiStringValue(
    LPCTSTR pszValueName,
    LPTSTR pszValue,
    ULONG* pnChars) throw();

매개 변수

pszValueName
쿼리할 NULL값의 이름을 포함하는 -terminated 문자열에 대한 포인터입니다.

pszValue
다중 문자열 데이터를 수신하는 버퍼에 대한 포인터입니다. 다중 문자열은 두 개의 null 문자로 종료되는 -terminated 문자열의 NULL배열입니다.

pnChars
로 가리키는 버퍼의 크기(in TCHARs)입니다 pszValue. 메서드가 반환 pnChars 될 때 종료 null 문자를 포함하여 검색된 다중 문자열의 크기(in TCHARs)를 포함합니다.

Return Value

메서드가 성공 ERROR_SUCCESS 하면 반환됩니다. 메서드가 값을 읽지 못하면 에 정의된 0이 아닌 오류 코드가 반환됩니다 WINERROR.H. 참조된 데이터가 형식 REG_MULTI_SZERROR_INVALID_DATA 이 아니면 반환됩니다.

설명

이 메서드는 올바른 형식의 RegQueryValueEx 데이터를 사용하고 반환되었는지 확인합니다. 자세한 내용은 RegQueryValueEx를 참조하세요.

Important

이 메서드를 사용하면 호출자가 신뢰할 수 없는 데이터를 읽을 수 있는 레지스트리 위치를 지정할 수 있습니다. 또한 이 메서드에서 RegQueryValueEx 사용하는 함수는 null로 끝나는 문자열을 명시적으로 처리하지 않습니다. 두 조건 모두 호출 코드에서 확인해야 합니다.

CRegKey::QueryQWORDValue

지정된 값 이름의 데이터를 검색 QWORD 하려면 이 메서드를 호출합니다.

LONG QueryQWORDValue(
    LPCTSTR pszValueName,
    ULONGLONG& qwValue) throw();

매개 변수

pszValueName
쿼리할 NULL값의 이름을 포함하는 -terminated 문자열에 대한 포인터입니다.

qwValue
를 수신하는 버퍼에 대한 포인터입니다 QWORD.

Return Value

메서드가 성공 ERROR_SUCCESS 하면 반환됩니다. 메서드가 값을 읽지 못하면 에 정의된 0이 아닌 오류 코드가 반환됩니다 WINERROR.H. 참조된 데이터가 형식 REG_QWORDERROR_INVALID_DATA 이 아니면 반환됩니다.

설명

이 메서드는 올바른 형식의 RegQueryValueEx 데이터를 사용하고 반환되었는지 확인합니다. 자세한 내용은 RegQueryValueEx를 참조하세요.

Important

이 메서드를 사용하면 호출자가 신뢰할 수 없는 데이터를 읽을 수 있는 레지스트리 위치를 지정할 수 있습니다. 또한 이 메서드에서 RegQueryValueEx 사용하는 함수는 null로 끝나는 문자열을 명시적으로 처리하지 않습니다. 두 조건 모두 호출 코드에서 확인해야 합니다.

CRegKey::QueryStringValue

지정된 값 이름의 문자열 데이터를 검색하려면 이 메서드를 호출합니다.

LONG QueryStringValue(
    LPCTSTR pszValueName,
    LPTSTR pszValue,
    ULONG* pnChars) throw();

매개 변수

pszValueName
쿼리할 NULL값의 이름을 포함하는 -terminated 문자열에 대한 포인터입니다.

pszValue
문자열 데이터를 수신하는 버퍼에 대한 포인터입니다.

pnChars
가 가리키는 pszValue버퍼의 크기(TCHAR)입니다. 메서드가 반환 pnChars 될 때 종료 null 문자를 포함하여 검색된 문자열의 크기(in TCHARs)를 포함합니다.

Return Value

메서드가 성공 ERROR_SUCCESS 하면 반환됩니다. 메서드가 값을 읽지 못하면 에 정의된 0이 아닌 오류 코드가 반환됩니다 WINERROR.H. 참조된 데이터가 형식 REG_SZERROR_INVALID_DATA 이 아니면 반환됩니다. 메서드가 반환 ERROR_MORE_DATApnChars 되는 경우 필요한 버퍼 크기(바이트)가 아니라 0과 같습니다.

설명

이 메서드는 올바른 형식의 RegQueryValueEx 데이터를 사용하고 반환되었는지 확인합니다. 자세한 내용은 RegQueryValueEx를 참조하세요.

Important

이 메서드를 사용하면 호출자가 신뢰할 수 없는 데이터를 읽을 수 있는 레지스트리 위치를 지정할 수 있습니다. 또한 이 메서드에서 RegQueryValueEx 사용하는 함수는 null로 끝나는 문자열을 명시적으로 처리하지 않습니다. 두 조건 모두 호출 코드에서 확인해야 합니다.

CRegKey::QueryValue

지정된 값 필드의 데이터를 검색하려면 이 메서드를 호출합니다 m_hKey. 이 메서드의 이전 버전은 더 이상 지원되지 않으며 로 ATL_DEPRECATED표시됩니다.

LONG QueryValue(
    LPCTSTR pszValueName,
    DWORD* pdwType,
    void* pData,
    ULONG* pnBytes) throw();

ATL_DEPRECATED LONG QueryValue(
    DWORD& dwValue,
    LPCTSTR lpszValueName);

ATL_DEPRECATED LONG QueryValue(
    LPTSTR szValue,
    LPCTSTR lpszValueName,
    DWORD* pdwCount);

매개 변수

pszValueName
쿼리할 NULL값의 이름을 포함하는 -terminated 문자열에 대한 포인터입니다. 문자열이거나 NULL 빈 문자열""인 경우 pszValueName 메서드는 키의 명명되지 않은 값 또는 기본값(있는 경우)에 대한 형식 및 데이터를 검색합니다.

pdwType
지정된 값에 저장된 데이터의 형식을 나타내는 코드를 받는 변수에 대한 포인터입니다. 매개 변수는 pdwType 형식 코드가 필요하지 않은 경우일 NULL 수 있습니다.

pData
값의 데이터를 받는 버퍼에 대한 포인터입니다. 이 매개 변수는 데이터가 필요하지 않은 경우일 NULL 수 있습니다.

pnBytes
매개 변수가 가리키는 버퍼의 크기(바이트)를 지정하는 변수에 대한 pData 포인터입니다. 메서드가 반환될 때 이 변수에는 복사된 pData데이터의 크기가 포함됩니다.

dwValue
값 필드의 숫자 데이터입니다.

lpszValueName
쿼리할 값 필드를 지정합니다.

szValue
값 필드의 문자열 데이터입니다.

pdwCount
문자열 데이터의 크기입니다. 해당 값은 처음에 버퍼의 크기로 설정됩니다 szValue .

Return Value

성공하면 반환하고, 그렇지 않으면 에 정의된 0이 아닌 오류 코드를 반환 ERROR_SUCCESS합니다 WINERROR.H.

설명

두 원래 QueryValue 버전은 더 이상 지원되지 않으며 로 ATL_DEPRECATED표시됩니다. 이러한 양식을 사용하는 경우 컴파일러에서 경고를 실행합니다.

나머지 메서드는 .를 호출합니다 RegQueryValueEx.

Important

이 메서드를 사용하면 호출자가 신뢰할 수 없는 데이터를 읽을 수 있는 레지스트리 위치를 지정할 수 있습니다. 또한 이 메서드에서 RegQueryValueEx 사용하는 함수는 null로 끝나는 문자열을 명시적으로 처리하지 않습니다. 두 조건 모두 호출 코드에서 확인해야 합니다.

CRegKey::RecurseDeleteKey

레지스트리에서 지정된 키를 제거하고 하위 키를 명시적으로 제거하려면 이 메서드를 호출합니다.

LONG RecurseDeleteKey(LPCTSTR lpszKey) throw();

매개 변수

lpszKey
삭제할 키의 이름을 지정합니다. 이 이름은 .의 m_hKey하위 키여야 합니다.

Return Value

성공하면 반환됩니다. ERROR_SUCCESS그렇지 않으면 0이 아닌 오류 값이 정의됩니다 WINERROR.H.

설명

키에 하위 키가 있는 경우 이 메서드를 호출하여 키를 삭제해야 합니다.

CRegKey::SetBinaryValue

레지스트리 키의 이진 값을 설정하려면 이 메서드를 호출합니다.

LONG SetBinaryValue(
    LPCTSTR pszValueName,
    const void* pValue,
    ULONG nBytes) throw();

매개 변수

pszValueName
설정할 값의 이름을 포함하는 문자열에 대한 포인터입니다. 이 이름의 값이 아직 없으면 메서드가 키에 추가합니다.

pValue
지정된 값 이름으로 저장할 데이터를 포함하는 버퍼에 대한 포인터입니다.

nBytes
매개 변수가 가리키는 정보의 크기(바이트)를 pValue 지정합니다.

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

이 메서드는 레지스트리에 값을 쓰는 데 사용합니다 RegSetValueEx .

CRegKey::SetDWORDValue

레지스트리 키의 DWORD 값을 설정하려면 이 메서드를 호출합니다.

LONG SetDWORDValue(LPCTSTR pszValueName, DWORD dwValue) throw();

매개 변수

pszValueName
설정할 값의 이름을 포함하는 문자열에 대한 포인터입니다. 이 이름의 값이 아직 없으면 메서드가 키에 추가합니다.

dwValue
DWORD 지정된 값 이름으로 저장할 데이터입니다.

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

이 메서드는 레지스트리에 값을 쓰는 데 사용합니다 RegSetValueEx .

CRegKey::SetGUIDValue

레지스트리 키의 GUID 값을 설정하려면 이 메서드를 호출합니다.

LONG SetGUIDValue(LPCTSTR pszValueName, REFGUID guidValue) throw();

매개 변수

pszValueName
설정할 값의 이름을 포함하는 문자열에 대한 포인터입니다. 이 이름의 값이 아직 없으면 메서드가 키에 추가합니다.

guidValue
지정된 값 이름으로 저장할 GUID에 대한 참조입니다.

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

이 메서드는 GUID를 CRegKey::SetStringValue 사용하여 StringFromGUID2문자열로 변환합니다.

CRegKey::SetKeyValue

지정된 키의 지정된 값 필드에 데이터를 저장하려면 이 메서드를 호출합니다.

LONG SetKeyValue(
    LPCTSTR lpszKeyName,
    LPCTSTR lpszValue,
    LPCTSTR lpszValueName = NULL) throw();

매개 변수

lpszKeyName
만들거나 열 키의 이름을 지정합니다. 이 이름은 .의 m_hKey하위 키여야 합니다.

lpszValue
저장할 데이터를 지정합니다. 이 매개 변수는 비NULL여야 합니다.

lpszValueName
설정할 값 필드를 지정합니다. 이 이름의 값 필드가 키에 아직 없으면 추가됩니다.

Return Value

성공하면 반환하고, 그렇지 않으면 에 정의된 0이 아닌 오류 코드를 반환 ERROR_SUCCESS합니다 WINERROR.H.

설명

이 메서드를 호출하여 키를 만들거나 열고 lpszKeyName 값 필드에 데이터를 lpszValueName 저장 lpszValue 합니다.

CRegKey::SetKeySecurity

레지스트리 키의 보안을 설정하려면 이 메서드를 호출합니다.

LONG SetKeySecurity(SECURITY_INFORMATION si, PSECURITY_DESCRIPTOR psd) throw();

매개 변수

si
설정할 보안 설명자의 구성 요소를 지정합니다. 값은 다음 값의 조합일 수 있습니다.

의미
DACL_SECURITY_INFORMATION 키의 DACL(임의 액세스 제어 목록)을 설정합니다. 키에 액세스 권한이 WRITE_DAC 있어야 하거나 호출 프로세스가 개체의 소유자여야 합니다.
GROUP_SECURITY_INFORMATION 키의 기본 그룹 SID(보안 식별자)를 설정합니다. 키에 액세스 권한이 WRITE_OWNER 있어야 하거나 호출 프로세스가 개체의 소유자여야 합니다.
OWNER_SECURITY_INFORMATION 키의 소유자 SID를 설정합니다. 키에 액세스 권한이 있어야 하거나 WRITE_OWNER 호출 프로세스가 개체의 소유자이거나 사용 권한이 있어야 SE_TAKE_OWNERSHIP_NAME 합니다.
SACL_SECURITY_INFORMATION 키의 SACL(시스템 액세스 제어 목록)을 설정합니다. 키에는 액세스 권한이 ACCESS_SYSTEM_SECURITY 있어야 합니다. 이 액세스를 가져오는 적절한 방법은 호출자의 현재 액세스 토큰에서 권한을 사용하도록 설정하고 SE_SECURITY_NAME 액세스에 대한 핸들을 ACCESS_SYSTEM_SECURITY 연 다음 권한을 사용하지 않도록 설정하는 것입니다.

psd
지정된 키에 SECURITY_DESCRIPTOR 대해 설정할 보안 특성을 지정하는 구조체에 대한 포인터입니다.

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

키의 보안 특성을 설정합니다. 자세한 내용은 RegSetKeySecurity를 참조하세요.

CRegKey::SetMultiStringValue

레지스트리 키의 다중 문자열 값을 설정하려면 이 메서드를 호출합니다.

LONG SetMultiStringValue(LPCTSTR pszValueName, LPCTSTR pszValue) throw();

매개 변수

pszValueName
설정할 값의 이름을 포함하는 문자열에 대한 포인터입니다. 이 이름의 값이 아직 없으면 메서드가 키에 추가합니다.

pszValue
지정된 값 이름으로 저장할 다중 문자열 데이터에 대한 포인터입니다. 다중 문자열은 두 개의 null 문자로 종료되는 -terminated 문자열의 NULL배열입니다.

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

이 메서드는 레지스트리에 값을 쓰는 데 사용합니다 RegSetValueEx .

CRegKey::SetQWORDValue

레지스트리 키의 QWORD 값을 설정하려면 이 메서드를 호출합니다.

LONG SetQWORDValue(LPCTSTR pszValueName, ULONGLONG qwValue) throw();

매개 변수

pszValueName
설정할 값의 이름을 포함하는 문자열에 대한 포인터입니다. 이 이름의 값이 아직 없으면 메서드가 키에 추가합니다.

qwValue
QWORD 지정된 값 이름으로 저장할 데이터입니다.

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

이 메서드는 레지스트리에 값을 쓰는 데 사용합니다 RegSetValueEx .

CRegKey::SetStringValue

레지스트리 키의 문자열 값을 설정하려면 이 메서드를 호출합니다.

LONG SetStringValue(
    LPCTSTR pszValueName,
    LPCTSTR pszValue,
    DWORD dwType = REG_SZ) throw();

매개 변수

pszValueName
설정할 값의 이름을 포함하는 문자열에 대한 포인터입니다. 이 이름의 값이 아직 없으면 메서드가 키에 추가합니다.

pszValue
지정된 값 이름으로 저장할 문자열 데이터에 대한 포인터입니다.

dwType
레지스트리 REG_SZ 에 쓸 문자열의 형식입니다(기본값) 또는 REG_EXPAND_SZ (다중 문자열의 경우).

Return Value

메서드가 성공하면 반환 값은 .입니다 ERROR_SUCCESS. 메서드가 실패하면 반환 값은 에 정의된 0이 아닌 오류 코드입니다 WINERROR.H.

설명

이 메서드는 레지스트리에 값을 쓰는 데 사용합니다 RegSetValueEx .

CRegKey::SetValue

지정된 값 필드에 데이터를 저장하려면 이 메서드를 호출합니다 m_hKey. 이 메서드의 이전 버전은 더 이상 지원되지 않으며 로 ATL_DEPRECATED표시됩니다.

LONG SetValue(
    LPCTSTR pszValueName,
    DWORD dwType,
    const void* pValue,
    ULONG nBytes) throw();

static LONG WINAPI SetValue(
    HKEY hKeyParent,
    LPCTSTR lpszKeyName,
    LPCTSTR lpszValue,
    LPCTSTR lpszValueName = NULL);

ATL_DEPRECATED LONG SetValue(
    DWORD dwValue,
    LPCTSTR lpszValueName);

ATL_DEPRECATED LONG SetValue(
    LPCTSTR lpszValue,
    LPCTSTR lpszValueName = NULL,
    bool bMulti = false,
    int nValueLen = -1);

매개 변수

pszValueName
설정할 값의 이름을 포함하는 문자열에 대한 포인터입니다. 이 이름의 값이 아직 키에 없는 경우 메서드는 키에 값을 추가합니다. 문자열이거나 NULL 빈 문자열""인 경우 pszValueName 메서드는 키의 명명되지 않은 값이나 기본값에 대한 형식 및 데이터를 설정합니다.

dwType
매개 변수가 가리키는 pValue 데이터 형식을 나타내는 코드를 지정합니다.

pValue
지정된 값 이름으로 저장할 데이터를 포함하는 버퍼에 대한 포인터입니다.

nBytes
매개 변수가 가리키는 정보의 크기(바이트)를 pValue 지정합니다. 데이터가 형식 REG_SZREG_EXPAND_SZREG_MULTI_SZnBytes 이거나 종료 null 문자의 크기를 포함해야 하는 경우

hKeyParent
열린 키의 핸들입니다.

lpszKeyName
만들거나 열 키의 이름을 지정합니다. 이 이름은 .의 hKeyParent하위 키여야 합니다.

lpszValue
저장할 데이터를 지정합니다. 이 매개 변수는 비NULL여야 합니다.

lpszValueName
설정할 값 필드를 지정합니다. 이 이름의 값 필드가 키에 아직 없으면 추가됩니다.

dwValue
저장할 데이터를 지정합니다.

bMulti
false이면 문자열이 형식 REG_SZ임을 나타냅니다. true이면 문자열이 형식 REG_MULTI_SZ의 다중 문자열임을 나타냅니다.

nValueLen
true nValueLen 이면 bMulti 문자열의 길이(lpszValue문자)입니다. false이면 bMulti 값 -1은 메서드가 길이를 자동으로 계산한다는 것을 나타냅니다.

Return Value

성공하면 반환하고, 그렇지 않으면 에 정의된 0이 아닌 오류 코드를 반환 ERROR_SUCCESS합니다 WINERROR.H.

설명

두 원래 SetValue 버전이 더 이상 사용되지 않는 것으로 ATL_DEPRECATED 표시되어 있습니다. 이러한 양식을 사용하는 경우 컴파일러에서 경고를 실행합니다.

세 번째 메서드는 .를 호출합니다 RegSetValueEx.

참고 항목

DCOM 샘플
클래스 개요