Класс CRegKey
Этот класс предоставляет методы для управления записями в системном реестре.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
class CRegKey
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CRegKey::CRegKey |
Конструктор. |
CRegKey::~CRegKey |
Деструктор |
Открытые методы
Имя | Описание |
---|---|
CRegKey::Attach |
Вызовите этот метод для подключения HKEY к CRegKey объекту, задав дескриптор m_hKey hKey члена. |
CRegKey::Close |
Вызовите этот метод, чтобы освободить дескриптор m_hKey члена и задать для него значение NULL . |
CRegKey::Create |
Вызовите этот метод, чтобы создать указанный ключ, если он не существует в качестве подраздела hKeyParent . |
CRegKey::DeleteSubKey |
Вызовите этот метод, чтобы удалить указанный раздел из реестра. |
CRegKey::DeleteValue |
Вызовите этот метод, чтобы удалить поле значения из m_hKey . |
CRegKey::Detach |
Вызовите этот метод, чтобы отсоединить дескриптор m_hKey CRegKey члена от объекта и задать 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_hKey
hKey
члена.
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
.
Замечания
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
.
Возвращаемое значение
В случае успеха возвращает ERROR_SUCCESS
. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H
.
Замечания
DeleteSubKey
может удалить только ключ без вложенных ключей. Если ключ имеет вложенные ключи, вызовите RecurseDeleteKey
вместо этого.
CRegKey::DeleteValue
Вызовите этот метод, чтобы удалить поле значения из m_hKey
.
LONG DeleteValue(LPCTSTR lpszValue) throw();
Параметры
lpszValue
Указывает поле значения для удаления.
Возвращаемое значение
В случае успеха возвращает ERROR_SUCCESS
. Если метод завершается ошибкой, возвращаемое значение является ненулевом кодом ошибки, определенным в WINERROR.H
.
CRegKey::Detach
Вызовите этот метод, чтобы отсоединить дескриптор m_hKey
CRegKey
члена от объекта и задать 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
Размер буфера, на который указывает pszValue
TCHARs. При возврате 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
.