Класс CRegKey

Этот класс предоставляет методы для управления записями в системном реестре.

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

class CRegKey

Участники

Открытые конструкторы

Имя Описание
CRegKey::CRegKey Конструктор.
CRegKey::~CRegKey Деструктор

Открытые методы

Имя Описание
CRegKey::Attach Вызовите этот метод для подключения HKEY к CRegKey объекту, задав дескриптор m_hKeyhKeyчлена.
CRegKey::Close Вызовите этот метод, чтобы освободить дескриптор m_hKey члена и задать для него значение NULL.
CRegKey::Create Вызовите этот метод, чтобы создать указанный ключ, если он не существует в качестве подраздела hKeyParent.
CRegKey::DeleteSubKey Вызовите этот метод, чтобы удалить указанный раздел из реестра.
CRegKey::DeleteValue Вызовите этот метод, чтобы удалить поле значения из m_hKey.
CRegKey::Detach Вызовите этот метод, чтобы отсоединить дескриптор m_hKeyCRegKey члена от объекта и задать m_hKey значение 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.

Открытые операторы

Имя Описание
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.

При закрытии ключа его данные реестра записываются на жесткий диск (отмыкаются). Этот процесс может занять несколько секунд. Если приложение должно явно записывать данные реестра на жесткий диск, можно вызвать RegFlushKey функцию Win32. RegFlushKey Однако использует множество системных ресурсов и следует вызывать только при абсолютной необходимости.

Важно!

Все методы, позволяющие вызывающему объекту указать расположение реестра, могут считывать данные, которые не могут быть доверенными. Методы, которые используются RegQueryValueEx , должны учитывать, что эта функция явно не обрабатывает строки, завершаемые значением NULL. Оба условия должны быть проверка для вызывающего кода.

Требования

Заголовок.atlbase.h

CRegKey::Attach

Вызовите этот метод, чтобы подключить HKEY объект к CRegKey объекту, задав дескриптор m_hKeyhKeyчлена.

void Attach(HKEY hKey) throw();

Параметры

hKey
Дескриптор раздела реестра.

Замечания

Attach будет утверждать, если m_hKey не являетсяNULL.

CRegKey::Close

Вызовите этот метод, чтобы освободить дескриптор m_hKey члена и задать для него значение NULL.

LONG Close() throw();

Возвращаемое значение

В случае успешного выполнения возвращается 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. Список возможных значений и описаний см RegCreateKeyEx . в пакете SDK для Windows.

samDesired
Доступ к безопасности ключа. Значение по умолчанию — KEY_READ | KEY_WRITE. Список возможных значений и описаний см. в разделе RegCreateKeyEx.

lpSecAttr
Указатель на SECURITY_ATTRIBUTES структуру, которая указывает, может ли дескриптор ключа наследоваться дочерним процессом. По умолчанию этот параметр имеет значение NULL (то есть дескриптор не может быть унаследован).

lpdwDisposition
[out] NULLЕсли ключ отсутствует, извлекает REG_CREATED_NEW_KEY (если ключ не существовал и был создан) или REG_OPENED_EXISTING_KEY (если ключ существовал и был открыт).

Возвращаемое значение

При успешном выполнении возвращается ERROR_SUCCESS и открывается ключ. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

Замечания

Createm_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.

Возвращаемое значение

В случае успеха возвращает ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

Замечания

DeleteSubKey может удалить только ключ без вложенных ключей. Если ключ имеет вложенные ключи, вызовите RecurseDeleteKey вместо этого.

CRegKey::DeleteValue

Вызовите этот метод, чтобы удалить поле значения из m_hKey.

LONG DeleteValue(LPCTSTR lpszValue) throw();

Параметры

lpszValue
Указывает поле значения для удаления.

Возвращаемое значение

В случае успеха возвращает ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

CRegKey::Detach

Вызовите этот метод, чтобы отсоединить дескриптор m_hKeyCRegKey члена от объекта и задать m_hKey значение NULL.

HKEY Detach() throw();

Возвращаемое значение

HKEY, связанный CRegKey с объектом.

CRegKey::EnumKey

Вызовите этот метод, чтобы перечислить вложенные разделы открытого раздела реестра.

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

Параметры

iIndex
Индекс подраздела. Этот параметр должен быть равен нулю для первого вызова, а затем увеличивается для последующих вызовов.

pszName
Указатель на буфер, получающий имя подраздела, включая завершающийся символ NULL. Только имя подраздела копируется в буфер, а не в полной иерархии ключей.

pnNameLength
Указатель на переменную, указывающую размер буфера, TCHARsзаданного параметром pszName . Этот размер должен содержать завершающийся пустой символ. При возврате метода переменная, на которую указывает pnNameLength число символов, хранящихся в буфере. Возвращаемое число не включает завершающий символ NULL.

pftLastWriteTime
Указатель на переменную, получающую время последней записи перечисленного подраздела.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

Замечания

Чтобы перечислить вложенные ключи, вызовите CRegKey::EnumKey индекс с нулем. Увеличивает значение индекса и повторяется до тех пор, пока метод не возвращается ERROR_NO_MORE_ITEMS. Дополнительные сведения см RegEnumKeyEx . в пакете SDK для Windows.

CRegKey::Flush

Вызовите этот метод для записи всех атрибутов открытого раздела реестра в реестр.

LONG Flush() throw();

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

Замечания

Дополнительные сведения см RegEnumFlush . в пакете SDK для Windows.

CRegKey::GetKeySecurity

Вызовите этот метод, чтобы получить копию дескриптора безопасности, защищающую открытый раздел реестра.

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

Параметры

si
Значение SECURITY_INFORMATION , указывающее запрошенную информацию о безопасности.

psd
Указатель на буфер, получающий копию запрошенного дескриптора безопасности.

pnBytes
Размер буфера в байтах, на который указывает psd.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение ненулевого кода ошибки определяется в 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, метод возвращается немедленно, и изменения передаются сигналом об этом событии. Если bAsync это FALSEтак, hEvent игнорируется.

bAsync
Указывает флаг, указывающий, как изменяется метод. Если этот параметр задан TRUE, метод возвращает немедленно и сообщает об изменениях, сигналив указанному событию. Если этот параметр имеет значение FALSE, метод не возвращается до тех пор, пока не произошло изменение. Если hEvent не указано допустимое событие, bAsync параметр не может быть TRUE.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в 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. Список возможных значений и описаний см RegCreateKeyEx . в пакете SDK для Windows.

Возвращаемое значение

В случае успешного выполнения возвращается ERROR_SUCCESS; в противном случае значение ошибки, отличное от нуля, определенное в WINERROR.H.

Замечания

lpszKeyName Если параметр имеет NULL значение или указывает на пустую строку, открывает новый дескриптор ключа, Open идентифицированногоhKeyParent, но не закрывает ранее открытый дескриптор.

В отличие от CRegKey::Createэтого, Open не будет создавать указанный ключ, если он не существует.

CRegKey::operator HKEY

Преобразует объект в CRegKey объект HKEY.

operator HKEY() const throw();

CRegKey::operator =

Оператор присвоения.

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

Параметры

key
Ключ для копирования.

Возвращаемое значение

Возвращает ссылку на новый ключ.

Замечания

Этот оператор отсоединяется key от текущего объекта и назначает его объекту CRegKey .

CRegKey::QueryBinaryValue

Вызовите этот метод, чтобы получить двоичные данные для указанного имени значения.

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

Параметры

pszValueName
Указатель на NULLстроку,завершающую запрос, содержащую имя значения для запроса.

pValue
Указатель на буфер, получающий данные значения.

pnBytes
Указатель на переменную, указывающую размер буфера в байтах, на который указывает pValue параметр. При возврате метода эта переменная содержит размер данных, скопированных в буфер.

Возвращаемое значение

Если метод выполнен успешно, ERROR_SUCCESS возвращается. Если метод не считывает значение, он возвращает ненулевой код ошибки, определенный в WINERROR.H. Если данные, на которые ссылается ссылка, не являются типом REG_BINARY, ERROR_INVALID_DATA возвращается.

Замечания

Этот метод использует RegQueryValueEx и подтверждает, что возвращается правильный тип данных. Дополнительные сведения см. в статье RegQueryValueEx.

Важно!

Этот метод позволяет вызывающему объекту указать любое расположение реестра, потенциально считывая данные, которые не могут быть доверенными. Кроме того, функция, используемая RegQueryValueEx этим методом, не обрабатывает строки, завершаемые значением NULL. Оба условия должны быть проверка для вызывающего кода.

CRegKey::QueryDWORDValue

Вызовите этот метод, чтобы получить DWORD данные для указанного имени значения.

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

Параметры

pszValueName
Указатель на NULLстроку,завершающую запрос, содержащую имя значения для запроса.

dwValue
Указатель на буфер, получающий DWORD.

Возвращаемое значение

Если метод выполнен успешно, ERROR_SUCCESS возвращается. Если метод не считывает значение, он возвращает ненулевой код ошибки, определенный в WINERROR.H. Если данные, на которые ссылается ссылка, не являются типом REG_DWORD, ERROR_INVALID_DATA возвращается.

Замечания

Этот метод использует RegQueryValueEx и подтверждает, что возвращается правильный тип данных. Дополнительные сведения см. в статье RegQueryValueEx.

Важно!

Этот метод позволяет вызывающему объекту указать любое расположение реестра, потенциально считывая данные, которые не могут быть доверенными. Кроме того, функция, используемая RegQueryValueEx этим методом, не обрабатывает строки, завершаемые значением NULL. Оба условия должны быть проверка для вызывающего кода.

CRegKey::QueryGUIDValue

Вызовите этот метод, чтобы получить данные GUID для указанного имени значения.

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

Параметры

pszValueName
Указатель на NULLстроку,завершающую запрос, содержащую имя значения для запроса.

guidValue
Указатель на переменную, которая получает GUID.

Возвращаемое значение

Если метод выполнен успешно, ERROR_SUCCESS возвращается. Если метод не считывает значение, он возвращает ненулевой код ошибки, определенный в WINERROR.H. Если данные, на которые ссылается ссылка, не являются допустимым ИДЕНТИФИКАТОРом GUID, ERROR_INVALID_DATA возвращается.

Замечания

Этот метод использует CRegKey::QueryStringValue и преобразует строку в GUID с помощью CLSIDFromString.

Важно!

Этот метод позволяет вызывающему объекту указать любое расположение реестра, потенциально считывая данные, которые не могут быть доверенными.

CRegKey::QueryMultiStringValue

Вызовите этот метод, чтобы получить многостроонные данные для указанного имени значения.

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

Параметры

pszValueName
Указатель на NULLстроку,завершающую запрос, содержащую имя значения для запроса.

pszValue
Указатель на буфер, получающий многостроонные данные. Многострока — это массив NULLстрок, завершаемых двумя пустыми символами.

pnChars
Размер буфера, TCHARsна который указывает.pszValue При возврате метода содержит размер, pnChars в TCHARsкотором извлекается многостроочный символ, включая завершающийся пустой символ.

Возвращаемое значение

Если метод выполнен успешно, ERROR_SUCCESS возвращается. Если метод не считывает значение, он возвращает ненулевой код ошибки, определенный в WINERROR.H. Если данные, на которые ссылается ссылка, не являются типом REG_MULTI_SZ, ERROR_INVALID_DATA возвращается.

Замечания

Этот метод использует RegQueryValueEx и подтверждает, что возвращается правильный тип данных. Дополнительные сведения см. в статье RegQueryValueEx.

Важно!

Этот метод позволяет вызывающему объекту указать любое расположение реестра, потенциально считывая данные, которые не могут быть доверенными. Кроме того, функция, используемая RegQueryValueEx этим методом, не обрабатывает строки, завершаемые значением NULL. Оба условия должны быть проверка для вызывающего кода.

CRegKey::QueryQWORDValue

Вызовите этот метод, чтобы получить QWORD данные для указанного имени значения.

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

Параметры

pszValueName
Указатель на NULLстроку,завершающую запрос, содержащую имя значения для запроса.

qwValue
Указатель на буфер, получающий QWORD.

Возвращаемое значение

Если метод выполнен успешно, ERROR_SUCCESS возвращается. Если метод не считывает значение, он возвращает ненулевой код ошибки, определенный в WINERROR.H. Если данные, на которые ссылается ссылка, не являются типом REG_QWORD, ERROR_INVALID_DATA возвращается.

Замечания

Этот метод использует RegQueryValueEx и подтверждает, что возвращается правильный тип данных. Дополнительные сведения см. в статье RegQueryValueEx.

Важно!

Этот метод позволяет вызывающему объекту указать любое расположение реестра, потенциально считывая данные, которые не могут быть доверенными. Кроме того, функция, используемая RegQueryValueEx этим методом, не обрабатывает строки, завершаемые значением NULL. Оба условия должны быть проверка для вызывающего кода.

CRegKey::QueryStringValue

Вызовите этот метод, чтобы получить строковые данные для указанного имени значения.

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

Параметры

pszValueName
Указатель на NULLстроку,завершающую запрос, содержащую имя значения для запроса.

pszValue
Указатель на буфер, получающий строковые данные.

pnChars
Размер буфера, на который указывает pszValueTCHARs. При возврате pnChars метода содержит размер строки, TCHARsполученной, включая завершающийся символ NULL.

Возвращаемое значение

Если метод выполнен успешно, ERROR_SUCCESS возвращается. Если метод не считывает значение, он возвращает ненулевой код ошибки, определенный в WINERROR.H. Если данные, на которые ссылается ссылка, не являются типом REG_SZ, ERROR_INVALID_DATA возвращается. Если метод возвращает ERROR_MORE_DATAзначение , pnChars равно нулю, а не требуемому размеру буфера в байтах.

Замечания

Этот метод использует RegQueryValueEx и подтверждает, что возвращается правильный тип данных. Дополнительные сведения см. в статье RegQueryValueEx.

Важно!

Этот метод позволяет вызывающему объекту указать любое расположение реестра, потенциально считывая данные, которые не могут быть доверенными. Кроме того, функция, используемая 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строку,завершающую запрос, содержащую имя значения для запроса. NULL При pszValueName наличии или пустой строки ""метод извлекает тип и данные для неназванного или значения по умолчанию ключа.

pdwType
Указатель на переменную, которая получает код, указывающий тип данных, хранящихся в указанном значении. Параметр pdwType может быть NULL , если код типа не требуется.

pData
Указатель на буфер, получающий данные значения. Этот параметр может быть NULL , если данные не требуются.

pnBytes
Указатель на переменную, указывающую размер буфера в байтах, на который указывает pData параметр. При возврате метода эта переменная содержит размер скопированных в нее pDataданных.

dwValue
Числовые данные поля значения.

lpszValueName
Указывает поле значения для запроса.

szValue
Строковые данные поля значения.

pdwCount
Размер строковых данных. Его значение изначально присваивается размеру буфера szValue .

Возвращаемое значение

В случае успешного выполнения возвращается ERROR_SUCCESS; в противном случае код ошибки ненулевого значения, определенный в WINERROR.H.

Замечания

Две исходные QueryValue версии больше не поддерживаются и помечены как ATL_DEPRECATED. Компилятор выдает предупреждение, если эти формы используются.

Остальные вызовы RegQueryValueExметода.

Важно!

Этот метод позволяет вызывающему объекту указать любое расположение реестра, потенциально считывая данные, которые не могут быть доверенными. Кроме того, функция, используемая RegQueryValueEx этим методом, не обрабатывает строки, завершаемые значением NULL. Оба условия должны быть проверка для вызывающего кода.

CRegKey::RecurseDeleteKey

Вызовите этот метод, чтобы удалить указанный раздел из реестра и явно удалить все вложенные разделы.

LONG RecurseDeleteKey(LPCTSTR lpszKey) throw();

Параметры

lpszKey
Указывает имя ключа для удаления. Это имя должно быть вложенным ключом m_hKey.

Возвращаемое значение

В случае успешного выполнения возвращается ERROR_SUCCESS; в противном случае значение ошибки, отличное от нуля, определенное в WINERROR.H.

Замечания

Если ключ содержит вложенные ключи, необходимо вызвать этот метод, чтобы удалить ключ.

CRegKey::SetBinaryValue

Вызовите этот метод, чтобы задать двоичное значение раздела реестра.

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

Параметры

pszValueName
Указатель на строку, содержащую имя заданного значения. Если значение с этим именем еще нет, метод добавляет его в ключ.

pValue
Указатель на буфер, содержащий данные, хранящиеся с указанным именем значения.

nBytes
Задает размер в байтах информации, на которую указывает pValue параметр.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

Замечания

Этот метод используется RegSetValueEx для записи значения в реестр.

CRegKey::SetDWORDValue

Вызовите этот метод, чтобы задать DWORD значение раздела реестра.

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

Параметры

pszValueName
Указатель на строку, содержащую имя заданного значения. Если значение с этим именем еще нет, метод добавляет его в ключ.

dwValue
DWORD Данные, хранящиеся с указанным именем значения.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

Замечания

Этот метод используется RegSetValueEx для записи значения в реестр.

CRegKey::SetGUIDValue

Вызовите этот метод, чтобы задать значение GUID раздела реестра.

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

Параметры

pszValueName
Указатель на строку, содержащую имя заданного значения. Если значение с этим именем еще нет, метод добавляет его в ключ.

guidValue
Ссылка на GUID для хранения с указанным именем значения.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

Замечания

Этот метод использует CRegKey::SetStringValue и преобразует GUID в строку с помощью StringFromGUID2.

CRegKey::SetKeyValue

Вызовите этот метод для хранения данных в указанном поле значения указанного ключа.

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

Параметры

lpszKeyName
Указывает имя ключа, который необходимо создать или открыть. Это имя должно быть вложенным ключом m_hKey.

lpszValue
Указывает данные, хранящиеся. Этот параметр должен быть не-NULL.

lpszValueName
Указывает поле значения, которое нужно задать. Если поле значения с этим именем еще не существует в ключе, оно добавлено.

Возвращаемое значение

В случае успешного выполнения возвращается ERROR_SUCCESS; в противном случае код ошибки ненулевого значения, определенный в WINERROR.H.

Замечания

Вызовите этот метод, чтобы создать или открыть lpszKeyName ключ и сохранить lpszValue данные в lpszValueName поле значения.

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 Задает идентификатор безопасности владельца ключа. Ключ должен иметь WRITE_OWNER доступ, или вызывающий процесс должен быть владельцем объекта или иметь привилегию SE_TAKE_OWNERSHIP_NAME .
SACL_SECURITY_INFORMATION Задает список системного управления доступом ключа (SACL). Ключ должен иметь ACCESS_SYSTEM_SECURITY доступ. Чтобы получить этот доступ, необходимо включить SE_SECURITY_NAMEпривилегии в текущем маркере доступа вызывающего абонента, открыть дескриптор доступа ACCESS_SYSTEM_SECURITY , а затем отключить привилегию.

psd
Указатель на SECURITY_DESCRIPTOR структуру, указывающую атрибуты безопасности, заданные для указанного ключа.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

Замечания

Задает атрибуты безопасности ключа. Дополнительные сведения см. в статье RegSetKeySecurity.

CRegKey::SetMultiStringValue

Вызовите этот метод, чтобы задать многостроное значение раздела реестра.

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

Параметры

pszValueName
Указатель на строку, содержащую имя заданного значения. Если значение с этим именем еще нет, метод добавляет его в ключ.

pszValue
Указатель на многостроонные данные для хранения с указанным именем значения. Многострока — это массив NULLстрок, завершаемых двумя пустыми символами.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

Замечания

Этот метод используется RegSetValueEx для записи значения в реестр.

CRegKey::SetQWORDValue

Вызовите этот метод, чтобы задать QWORD значение раздела реестра.

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

Параметры

pszValueName
Указатель на строку, содержащую имя заданного значения. Если значение с этим именем еще нет, метод добавляет его в ключ.

qwValue
QWORD Данные, хранящиеся с указанным именем значения.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H.

Замечания

Этот метод используется RegSetValueEx для записи значения в реестр.

CRegKey::SetStringValue

Вызовите этот метод, чтобы задать строковое значение раздела реестра.

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

Параметры

pszValueName
Указатель на строку, содержащую имя заданного значения. Если значение с этим именем еще нет, метод добавляет его в ключ.

pszValue
Указатель на строковые данные, хранящиеся с указанным именем значения.

dwType
Тип строки для записи в реестр: REG_SZ (по умолчанию) или REG_EXPAND_SZ (для многостроек).

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение равно ERROR_SUCCESS. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в 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
Указатель на строку, содержащую имя заданного значения. Если значение с таким именем еще не присутствует в ключе, метод добавляет его в ключ. Если pszValueName строка или NULL пустая, ""метод задает тип и данные для неназванного или значения по умолчанию ключа.

dwType
Задает код, указывающий тип данных, на которые указывает pValue параметр.

pValue
Указатель на буфер, содержащий данные, хранящиеся с указанным именем значения.

nBytes
Задает размер в байтах информации, на которую указывает pValue параметр. Если данные имеют тип REG_SZ, REG_EXPAND_SZили REG_MULTI_SZдолжны nBytes включать размер завершающего символа NULL.

hKeyParent
Дескриптор открытого ключа.

lpszKeyName
Указывает имя ключа, который нужно создать или открыть. Это имя должно быть вложенным ключом hKeyParent.

lpszValue
Указывает данные, хранящиеся. Этот параметр должен быть не-NULL.

lpszValueName
Указывает поле значения, которое нужно задать. Если поле значения с этим именем еще не существует в ключе, оно добавлено.

dwValue
Указывает данные, хранящиеся.

bMulti
Если значение false, указывает, что строка имеет тип REG_SZ. Если значение true, указывает, что строка является многострокой типа REG_MULTI_SZ.

nValueLen
Если bMulti значение равно true, nValueLen длина lpszValue строки в символах. Если bMulti значение равно false, значение -1 указывает, что метод вычисляет длину автоматически.

Возвращаемое значение

В случае успешного выполнения возвращается ERROR_SUCCESS; в противном случае код ошибки ненулевого значения, определенный в WINERROR.H.

Замечания

Две исходные SetValue версии помечены как ATL_DEPRECATED и больше не должны использоваться. Компилятор выдает предупреждение, если эти формы используются.

Третий метод вызывает RegSetValueEx.

См. также

Пример DCOM
Общие сведения о классе