Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс
Этот класс предоставляет методы для управления записями в системном реестре.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения 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.
Замечания
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_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
Размер буфера, на который указывает 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.