Clase CRegKey
Esta clase proporciona métodos para manipular entradas en el Registro del sistema.
Importante
Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.
Sintaxis
class CRegKey
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CRegKey::CRegKey |
Constructor . |
CRegKey::~CRegKey |
El destructor . |
Métodos públicos
Nombre | Descripción |
---|---|
CRegKey::Attach |
Llame a este método para adjuntar un elemento HKEY al objeto CRegKey estableciendo el manipulador del miembro m_hKey en hKey . |
CRegKey::Close |
Llame a este método para liberar el manipulador del miembro m_hKey y establecerlo en NULL . |
CRegKey::Create |
Llame a este método para crear la clave especificada, si no existe como subclave de hKeyParent . |
CRegKey::DeleteSubKey |
Llame a este método para quitar la clave especificada del Registro. |
CRegKey::DeleteValue |
Llame a este método para quitar un campo de valor de m_hKey . |
CRegKey::Detach |
Llame a este método para desasociar el manipulador del miembro m_hKey del objeto CRegKey y establecer m_hKey en NULL . |
CRegKey::EnumKey |
Llame a este método para enumerar las subclaves de la clave del Registro abierta. |
CRegKey::Flush |
Llame a este método para escribir todos los atributos de la clave del Registro abierta en el Registro. |
CRegKey::GetKeySecurity |
Llame a este método para recuperar una copia del descriptor de seguridad que protege la clave del Registro abierta. |
CRegKey::NotifyChangeKeyValue |
Este método notifica al autor de la llamada los cambios realizados en los atributos o el contenido de la clave del Registro abierta. |
CRegKey::Open |
Llame a este método para abrir la clave especificada y establecer m_hKey en el manipulador de esta clave. |
CRegKey::QueryBinaryValue |
Llame a este método para recuperar los datos binarios de un nombre de valor especificado. |
CRegKey::QueryDWORDValue |
Llame a este método para recuperar los datos de tipo DWORD de un nombre de valor especificado. |
CRegKey::QueryGUIDValue |
Llame a este método para recuperar los datos de tipo GUID de un nombre de valor especificado. |
CRegKey::QueryMultiStringValue |
Llame a este método para recuperar los datos de tipo cadena múltiple de un nombre de valor especificado. |
CRegKey::QueryQWORDValue |
Llame a este método para recuperar los datos de tipo QWORD de un nombre de valor especificado. |
CRegKey::QueryStringValue |
Llame a este método para recuperar los datos de tipo cadena de un nombre de valor especificado. |
CRegKey::QueryValue |
Llame a este método para recuperar los datos del campo de valor especificado de m_hKey . Las versiones anteriores de este método ya no se admiten y se marcan como ATL_DEPRECATED . |
CRegKey::RecurseDeleteKey |
Llame a este método para quitar la clave especificada del Registro y quitar explícitamente las subclaves. |
CRegKey::SetBinaryValue |
Llame a este método para establecer el valor binario de la clave del Registro. |
CRegKey::SetDWORDValue |
Llame a este método para establecer el valor DWORD de la clave del Registro. |
CRegKey::SetGUIDValue |
Llame a este método para establecer el valor GUID de la clave del Registro. |
CRegKey::SetKeySecurity |
Llame a este método para establecer la seguridad de la clave del Registro. |
CRegKey::SetKeyValue |
Llame a este método para almacenar datos en un campo de valor especificado de una clave especificada. |
CRegKey::SetMultiStringValue |
Llame a este método para establecer el valor de cadena múltiple de la clave del Registro. |
CRegKey::SetQWORDValue |
Llame a este método para establecer el valor QWORD de la clave del Registro. |
CRegKey::SetStringValue |
Llame a este método para establecer el valor de cadena de la clave del Registro. |
CRegKey::SetValue |
Llame a este método para almacenar datos en el campo de valor especificado de m_hKey . Las versiones anteriores de este método ya no se admiten y se marcan como ATL_DEPRECATED . |
Operadores públicos
Nombre | Descripción |
---|---|
CRegKey::operator HKEY |
Convierte un objeto CRegKey en un objeto HKEY . |
CRegKey::operator = |
Operador de asignación. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CRegKey::m_hKey |
Contiene un manipulador de la clave del Registro asociada al objeto CRegKey . |
CRegKey::m_pTM |
Puntero al objeto CAtlTransactionManager |
Comentarios
CRegKey
proporciona métodos para crear y eliminar claves y valores del Registro del sistema. El registro contiene un conjunto de definiciones específico de la instalación para componentes del sistema, como números de versión de software, asignaciones lógicas a físicas del hardware instalado y objetos COM.
CRegKey
proporciona una interfaz de programación para el Registro del sistema de una máquina determinada. Por ejemplo, para abrir una clave del Registro determinada, llame a CRegKey::Open
. Para recuperar o modificar un valor de datos, llame a CRegKey::QueryValue
o CRegKey::SetValue
, respectivamente. Para cerrar una clave, llame a CRegKey::Close
.
Al cerrar una clave, sus datos del Registro se escriben (vacían) en el disco duro. Este proceso puede tardar varios segundos. Si la aplicación debe escribir explícitamente datos del Registro en el disco duro, puede llamar a la función Win32 RegFlushKey
. Sin embargo, RegFlushKey
usa muchos recursos del sistema y solo se debe llamar cuando sea absolutamente necesario.
Importante
Los métodos que permiten al autor de la llamada especificar una ubicación del Registro tienen la posibilidad de leer datos que pueden no ser de confianza. Los métodos que usan RegQueryValueEx
deben tener en cuenta que esta función no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.
Requisitos
Encabezado: atlbase.h
CRegKey::Attach
Llame a este método para adjuntar un elemento HKEY
al objeto CRegKey
estableciendo el manipulador del miembro m_hKey
en hKey
.
void Attach(HKEY hKey) throw();
Parámetros
hKey
Manipulador de una clave del Registro.
Comentarios
Attach
hará una aserción si m_hKey
no es NULL
.
CRegKey::Close
Llame a este método para liberar el manipulador del miembro m_hKey
y establecerlo en NULL
.
LONG Close() throw();
Valor devuelto
Si la operación se realiza correctamente, devuelve ERROR_SUCCESS
; de lo contrario, devuelve un valor de error.
CRegKey::Create
Llame a este método para crear la clave especificada, si no existe como subclave de 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();
Parámetros
hKeyParent
Manipulador de una clave abierta.
lpszKeyName
Especifica el nombre de una clave que se va a crear o abrir. Este nombre debe ser una subclave de hKeyParent
.
lpszClass
Especifica la clase de la clave que se va a crear o abrir. El valor predeterminado es REG_NONE.
dwOptions
Opciones de la clave. El valor predeterminado es REG_OPTION_NON_VOLATILE
. Para ver una lista de valores posibles y sus descripciones, consulte RegCreateKeyEx
en Windows SDK.
samDesired
Acceso de seguridad de la clave. El valor predeterminado es KEY_READ | KEY_WRITE
. Para ver una lista de valores posibles y sus descripciones, consulte RegCreateKeyEx
.
lpSecAttr
Puntero a una estructura SECURITY_ATTRIBUTES
que indica si un proceso secundario puede heredar el manipulador de la clave. De forma predeterminada, este parámetro es NULL
(lo que significa que el identificador no se puede heredar).
lpdwDisposition
[out] Si no es NULL
, recupera REG_CREATED_NEW_KEY
(si la clave no existía y se creó) o REG_OPENED_EXISTING_KEY
(si la clave existía y se abrió).
Valor devuelto
Si se ejecuta correctamente, devuelve ERROR_SUCCESS
y abre la clave. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Create
establece el miembro m_hKey
en el manipulador de esta clave.
CRegKey::CRegKey
Constructor .
CRegKey() throw();
CRegKey(CRegKey& key) throw();
explicit CRegKey(HKEY hKey) throw();
CRegKey(CAtlTransactionManager* pTM) throw();
Parámetros
key
Referencia a un objeto CRegKey
.
hKey
Manipulador de una clave del Registro.
pTM
Puntero al objeto CAtlTransactionManager
Comentarios
Crea un nuevo objeto CRegKey
. El objeto se puede crear a partir de un objeto CRegKey
existente o de un manipulador de una clave del Registro.
CRegKey::~CRegKey
El destructor .
~CRegKey() throw();
Comentarios
El destructor libera m_hKey
.
CRegKey::DeleteSubKey
Llame a este método para quitar la clave especificada del Registro.
LONG DeleteSubKey(LPCTSTR lpszSubKey) throw();
Parámetros
lpszSubKey
Especifica el nombre de la clave que se va a eliminar. Este nombre debe ser una subclave de m_hKey
.
Valor devuelto
Si la operación se realiza correctamente, devuelve ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
DeleteSubKey
solo puede eliminar una clave que no tenga subclaves. Si la clave tiene subclaves, llame a RecurseDeleteKey
en su lugar.
CRegKey::DeleteValue
Llame a este método para quitar un campo de valor de m_hKey
.
LONG DeleteValue(LPCTSTR lpszValue) throw();
Parámetros
lpszValue
Especifica el campo de valor que se va a quitar.
Valor devuelto
Si la operación se realiza correctamente, devuelve ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
CRegKey::Detach
Llame a este método para desasociar el manipulador del miembro m_hKey
del objeto CRegKey
y establecer m_hKey
en NULL
.
HKEY Detach() throw();
Valor devuelto
Elemento HKEY asociado al objeto CRegKey
.
CRegKey::EnumKey
Llame a este método para enumerar las subclaves de la clave del Registro abierta.
LONG EnumKey(
DWORD iIndex,
LPTSTR pszName,
LPDWORD pnNameLength,
FILETIME* pftLastWriteTime = NULL) throw();
Parámetros
iIndex
Índice de la subclave. Este parámetro debe ser cero para la primera llamada y, a continuación, incrementarse para las llamadas posteriores.
pszName
Puntero a un búfer que recibe el nombre de la subclave, incluido el carácter nulo de terminación. Solo se copia en el búfer el nombre de la subclave, no la jerarquía de claves completa.
pnNameLength
Puntero a una variable que especifica el tamaño, en TCHARs
, del búfer especificado por el parámetro pszName
. El tamaño debe incluir el carácter nulo de terminación. Cuando el método vuelve, la variable a la que apunta pnNameLength
contiene el número de caracteres almacenados en el búfer. El recuento devuelto no incluye el carácter nulo de terminación.
pftLastWriteTime
Puntero a una variable que recibe la hora en la que se escribió por última vez la subclave enumerada.
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Para enumerar las subclaves, llame a CRegKey::EnumKey
con un índice de valor cero. Incremente el valor de índice y repita hasta que el método devuelva ERROR_NO_MORE_ITEMS
. Para más información, consulte RegEnumKeyEx
en Windows SDK.
CRegKey::Flush
Llame a este método para escribir todos los atributos de la clave del Registro abierta en el Registro.
LONG Flush() throw();
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Para más información, consulte RegEnumFlush
en Windows SDK.
CRegKey::GetKeySecurity
Llame a este método para recuperar una copia del descriptor de seguridad que protege la clave del Registro abierta.
LONG GetKeySecurity(
SECURITY_INFORMATION si,
PSECURITY_DESCRIPTOR psd,
LPDWORD pnBytes) throw();
Parámetros
si
Valor de tipo SECURITY_INFORMATION
que indica la información de seguridad solicitada.
psd
Puntero a un búfer que recibe una copia del descriptor de seguridad solicitado.
pnBytes
Tamaño, en bytes, del búfer al que apunta psd
.
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Para obtener más información, vea RegGetKeySecurity
.
CRegKey::m_hKey
Contiene un manipulador de la clave del Registro asociada al objeto CRegKey
.
HKEY m_hKey;
CRegKey::m_pTM
Un puntero a un objeto CAtlTransactionManager
.
CAtlTransactionManager* m_pTM;
Comentarios
CRegKey::NotifyChangeKeyValue
Este método notifica al autor de la llamada los cambios realizados en los atributos o el contenido de la clave del Registro abierta.
LONG NotifyChangeKeyValue(
BOOL bWatchSubtree,
DWORD dwNotifyFilter,
HANDLE hEvent,
BOOL bAsync = TRUE) throw();
Parámetros
bWatchSubtree
Especifica una marca que indica si se deben notificar los cambios en la clave especificada y en todas sus subclaves o solo en la clave especificada. Si este parámetro es TRUE
, el método notifica los cambios en la clave y sus subclaves. Si el parámetro es FALSE
, el método solo notifica los cambios en la clave.
dwNotifyFilter
Especifica un conjunto de marcas que controlan qué cambios se deben notificar. Este parámetro puede ser una combinación de los siguientes valores:
Valor | Significado |
---|---|
REG_NOTIFY_CHANGE_NAME |
Notificar al autor de la llamada si se agrega o elimina una subclave. |
REG_NOTIFY_CHANGE_ATTRIBUTES |
Notificar al autor de la llamada los cambios en los atributos de la clave, como la información del descriptor de seguridad. |
REG_NOTIFY_CHANGE_LAST_SET |
Notificar al autor de la llamada los cambios en un valor de la clave. Esto puede incluir agregar o eliminar un valor, o cambiar un valor existente. |
REG_NOTIFY_CHANGE_SECURITY |
Notificar al autor de la llamada los cambios en el descriptor de seguridad de la clave. |
hEvent
Identificador para un evento. Si el parámetro bAsync
es TRUE
, el método vuelve inmediatamente y los cambios se notifican mediante la señalización de este evento. Si bAsync
es FALSE
, hEvent
se omite.
bAsync
Especifica una marca que indica cómo notifica el método los cambios. Si este parámetro es TRUE
, el método vuelve inmediatamente y notifica los cambios mediante la señalización del evento especificado. Cuando este parámetro es FALSE
, el método no vuelve hasta que se ha producido un cambio. Si hEvent
no especifica un evento válido, el bAsync
parámetro no puede ser TRUE
.
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Nota:
Este método no notifica al autor de la llamada si se elimina la clave especificada.
Para obtener más información y un programa de ejemplo, consulte RegNotifyChangeKeyValue
.
CRegKey::Open
Llame a este método para abrir la clave especificada y establecer m_hKey
en el manipulador de esta clave.
LONG Open(
HKEY hKeyParent,
LPCTSTR lpszKeyName,
REGSAM samDesired = KEY_READ | KEY_WRITE) throw();
Parámetros
hKeyParent
Manipulador de una clave abierta.
lpszKeyName
Especifica el nombre de una clave que se va a crear o abrir. Este nombre debe ser una subclave de hKeyParent
.
samDesired
Acceso de seguridad de la clave. El valor predeterminado es KEY_ALL_ACCESS
. Para ver una lista de valores posibles y sus descripciones, consulte RegCreateKeyEx
en Windows SDK.
Valor devuelto
Si se ejecuta correctamente, devuelve ERROR_SUCCESS
; de lo contrario, devuelve un valor de error distinto de cero definido en WINERROR.H
.
Comentarios
Si el parámetro lpszKeyName
es NULL
o apunta a una cadena vacía, Open
abre un nuevo manipulador de la clave identificada por hKeyParent
, pero no cierra ningún manipulador abierto previamente.
A diferencia de CRegKey::Create
, Open
no creará la clave especificada si no existe.
CRegKey::operator HKEY
Convierte un objeto CRegKey
en un objeto HKEY
.
operator HKEY() const throw();
CRegKey::operator =
Operador de asignación.
CRegKey& operator= (CRegKey& key) throw();
Parámetros
key
Clave que se va a copiar.
Valor devuelto
Devuelve una referencia a la nueva clave.
Comentarios
Este operador desasocia el elemento key
de su objeto actual y lo asigna al objeto CRegKey
en su lugar.
CRegKey::QueryBinaryValue
Llame a este método para recuperar los datos binarios de un nombre de valor especificado.
LONG QueryBinaryValue(
LPCTSTR pszValueName,
void* pValue,
ULONG* pnBytes) throw();
Parámetros
pszValueName
Puntero a una cadena terminada en NULL
que contiene el nombre del valor que se va a consultar.
pValue
Puntero a un búfer que recibe los datos del valor.
pnBytes
Puntero a una variable que especifica el tamaño, en bytes, del búfer al que apunta el parámetro pValue
. Cuando el método vuelve, esta variable contiene el tamaño de los datos copiados en el búfer.
Valor devuelto
Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS
. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H
. Si los datos a los que se hace referencia no son de tipo REG_BINARY
, se devuelve ERROR_INVALID_DATA
.
Comentarios
Este método utiliza RegQueryValueEx
y confirma que se devuelve el tipo de datos correcto. Consulte RegQueryValueEx
para obtener más detalles.
Importante
Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx
usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.
CRegKey::QueryDWORDValue
Llame a este método para recuperar los datos de tipo DWORD
de un nombre de valor especificado.
LONG QueryDWORDValue(
LPCTSTR pszValueName,
DWORD& dwValue) throw();
Parámetros
pszValueName
Puntero a una cadena terminada en NULL
que contiene el nombre del valor que se va a consultar.
dwValue
Puntero a un búfer que recibe el elemento DWORD
.
Valor devuelto
Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS
. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H
. Si los datos a los que se hace referencia no son de tipo REG_DWORD
, se devuelve ERROR_INVALID_DATA
.
Comentarios
Este método utiliza RegQueryValueEx
y confirma que se devuelve el tipo de datos correcto. Consulte RegQueryValueEx
para obtener más detalles.
Importante
Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx
usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.
CRegKey::QueryGUIDValue
Llame a este método para recuperar los datos de tipo GUID de un nombre de valor especificado.
LONG QueryGUIDValue(
LPCTSTR pszValueName,
GUID& guidValue) throw();
Parámetros
pszValueName
Puntero a una cadena terminada en NULL
que contiene el nombre del valor que se va a consultar.
guidValue
Puntero a una variable que recibe el GUID.
Valor devuelto
Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS
. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H
. Si los datos a los que se hace referencia no son un GUID válido, se devuelve ERROR_INVALID_DATA
.
Comentarios
Este método usa CRegKey::QueryStringValue
y convierte la cadena en un GUID mediante CLSIDFromString
.
Importante
Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza.
CRegKey::QueryMultiStringValue
Llame a este método para recuperar los datos de tipo cadena múltiple de un nombre de valor especificado.
LONG QueryMultiStringValue(
LPCTSTR pszValueName,
LPTSTR pszValue,
ULONG* pnChars) throw();
Parámetros
pszValueName
Puntero a una cadena terminada en NULL
que contiene el nombre del valor que se va a consultar.
pszValue
Puntero a un búfer que recibe los datos de cadena múltiple. Una cadena múltiple es una matriz de cadenas terminadas en NULL
y terminada por dos caracteres NULL.
pnChars
Tamaño, en TCHARs
, del búfer al que apunta pszValue
. Cuando el método vuelve, pnChars
contiene el tamaño, en TCHARs
, de la cadena múltiple recuperada, incluido un carácter nulo de terminación.
Valor devuelto
Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS
. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H
. Si los datos a los que se hace referencia no son de tipo REG_MULTI_SZ
, se devuelve ERROR_INVALID_DATA
.
Comentarios
Este método utiliza RegQueryValueEx
y confirma que se devuelve el tipo de datos correcto. Consulte RegQueryValueEx
para obtener más detalles.
Importante
Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx
usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.
CRegKey::QueryQWORDValue
Llame a este método para recuperar los datos de tipo QWORD
de un nombre de valor especificado.
LONG QueryQWORDValue(
LPCTSTR pszValueName,
ULONGLONG& qwValue) throw();
Parámetros
pszValueName
Puntero a una cadena terminada en NULL
que contiene el nombre del valor que se va a consultar.
qwValue
Puntero a un búfer que recibe el elemento QWORD
.
Valor devuelto
Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS
. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H
. Si los datos a los que se hace referencia no son de tipo REG_QWORD
, se devuelve ERROR_INVALID_DATA
.
Comentarios
Este método utiliza RegQueryValueEx
y confirma que se devuelve el tipo de datos correcto. Consulte RegQueryValueEx
para obtener más detalles.
Importante
Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx
usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.
CRegKey::QueryStringValue
Llame a este método para recuperar los datos de tipo cadena de un nombre de valor especificado.
LONG QueryStringValue(
LPCTSTR pszValueName,
LPTSTR pszValue,
ULONG* pnChars) throw();
Parámetros
pszValueName
Puntero a una cadena terminada en NULL
que contiene el nombre del valor que se va a consultar.
pszValue
Puntero a un búfer que recibe los datos de cadena.
pnChars
Tamaño, en TCHAR, del búfer al que apunta pszValue
. Cuando el método vuelve, pnChars
contiene el tamaño, en TCHARs
, de la cadena recuperada, incluido un carácter nulo de terminación.
Valor devuelto
Si el método se ejecuta correctamente, se devuelve ERROR_SUCCESS
. Si el método no puede leer un valor, devuelve un código de error distinto de cero definido en WINERROR.H
. Si los datos a los que se hace referencia no son de tipo REG_SZ
, se devuelve ERROR_INVALID_DATA
. Si el método devuelve ERROR_MORE_DATA
, pnChars
es igual a cero, no el tamaño de búfer necesario en bytes.
Comentarios
Este método utiliza RegQueryValueEx
y confirma que se devuelve el tipo de datos correcto. Consulte RegQueryValueEx
para obtener más detalles.
Importante
Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx
usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.
CRegKey::QueryValue
Llame a este método para recuperar los datos del campo de valor especificado de m_hKey
. Las versiones anteriores de este método ya no se admiten y se marcan como 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);
Parámetros
pszValueName
Puntero a una cadena terminada en NULL
que contiene el nombre del valor que se va a consultar. Si pszValueName
es NULL
o una cadena vacía, ""
, el método recupera el tipo y los datos del valor predeterminado o sin nombre de la clave, si existe.
pdwType
Puntero a una variable que recibe un código que indica el tipo de datos almacenados en el valor especificado. El parámetro pdwType
puede ser NULL
si el código de tipo no es necesario.
pData
Puntero a un búfer que recibe los datos del valor. Este parámetro puede ser NULL
si los datos no son necesarios.
pnBytes
Puntero a una variable que especifica el tamaño, en bytes, del búfer al que apunta el parámetro pData
. Cuando el método vuelve, esta variable contiene el tamaño de los datos copiados en pData
.
dwValue
Datos numéricos del campo de valor.
lpszValueName
Especifica el campo de valor que se va a consultar.
szValue
Datos de cadena del campo de valor.
pdwCount
Tamaño de los datos de cadena. Su valor se establece inicialmente en el tamaño del búfer szValue
.
Valor devuelto
Si se ejecuta correctamente, devuelve ERROR_SUCCESS
; de lo contrario, devuelve un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Las dos versiones originales de QueryValue
ya no se admiten y se marcan como ATL_DEPRECATED
. El compilador emitirá una advertencia si se usan estas formas.
El método restante llama a RegQueryValueEx
.
Importante
Este método permite al autor de la llamada especificar cualquier ubicación del Registro, por lo que podría leer datos que pueden no ser de confianza. Además, la función RegQueryValueEx
usada por este método no controla explícitamente las cadenas terminadas en null. El código que realiza la llamada debe comprobar ambas condiciones.
CRegKey::RecurseDeleteKey
Llame a este método para quitar la clave especificada del Registro y quitar explícitamente las subclaves.
LONG RecurseDeleteKey(LPCTSTR lpszKey) throw();
Parámetros
lpszKey
Especifica el nombre de la clave que se va a eliminar. Este nombre debe ser una subclave de m_hKey
.
Valor devuelto
Si se ejecuta correctamente, devuelve ERROR_SUCCESS
; de lo contrario, devuelve un valor de error distinto de cero definido en WINERROR.H
.
Comentarios
Si la clave tiene subclaves, debe llamar a este método para eliminar la clave.
CRegKey::SetBinaryValue
Llame a este método para establecer el valor binario de la clave del Registro.
LONG SetBinaryValue(
LPCTSTR pszValueName,
const void* pValue,
ULONG nBytes) throw();
Parámetros
pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.
pValue
Puntero a un búfer que contiene los datos que se van a almacenar con el nombre de valor especificado.
nBytes
Especifica el tamaño, en bytes, de la información a la que apunta el parámetro pValue
.
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Este método usa RegSetValueEx
para escribir el valor en el Registro.
CRegKey::SetDWORDValue
Llame a este método para establecer el valor DWORD
de la clave del Registro.
LONG SetDWORDValue(LPCTSTR pszValueName, DWORD dwValue) throw();
Parámetros
pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.
dwValue
Datos de tipo DWORD
que se van a almacenar con el nombre de valor especificado.
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Este método usa RegSetValueEx
para escribir el valor en el Registro.
CRegKey::SetGUIDValue
Llame a este método para establecer el valor GUID de la clave del Registro.
LONG SetGUIDValue(LPCTSTR pszValueName, REFGUID guidValue) throw();
Parámetros
pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.
guidValue
Referencia al GUID que se va a almacenar con el nombre de valor especificado.
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Este método usa CRegKey::SetStringValue
y convierte el GUID en una cadena mediante StringFromGUID2
.
CRegKey::SetKeyValue
Llame a este método para almacenar datos en un campo de valor especificado de una clave especificada.
LONG SetKeyValue(
LPCTSTR lpszKeyName,
LPCTSTR lpszValue,
LPCTSTR lpszValueName = NULL) throw();
Parámetros
lpszKeyName
Especifica el nombre de la clave que se va a crear o abrir. Este nombre debe ser una subclave de m_hKey
.
lpszValue
Especifica los datos que se van a almacenar. Este parámetro debe ser distinto de NULL
.
lpszValueName
Especifica el campo de valor que se va a establecer. Si aún no existe un campo de valor con este nombre en la clave, se agrega.
Valor devuelto
Si se ejecuta correctamente, devuelve ERROR_SUCCESS
; de lo contrario, devuelve un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Llame a este método para crear o abrir la clave lpszKeyName
y almacenar los datos de lpszValue
en el campo de valor lpszValueName
.
CRegKey::SetKeySecurity
Llame a este método para establecer la seguridad de la clave del Registro.
LONG SetKeySecurity(SECURITY_INFORMATION si, PSECURITY_DESCRIPTOR psd) throw();
Parámetros
si
Especifica los componentes del descriptor de seguridad que se va a establecer. El valor puede ser una combinación de los valores siguientes:
Valor | Significado |
---|---|
DACL_SECURITY_INFORMATION |
Establece la lista de control de acceso discrecional (DACL) de la clave. La clave debe tener acceso WRITE_DAC o el proceso que realiza la llamada debe ser el propietario del objeto. |
GROUP_SECURITY_INFORMATION |
Establece el identificador de seguridad (SID) del grupo principal de la clave. La clave debe tener acceso WRITE_OWNER o el proceso que realiza la llamada debe ser el propietario del objeto. |
OWNER_SECURITY_INFORMATION |
Establece el SID del propietario de la clave. La clave debe tener acceso WRITE_OWNER o el proceso que realiza la llamada debe ser el propietario del objeto o tener habilitado el privilegio SE_TAKE_OWNERSHIP_NAME . |
SACL_SECURITY_INFORMATION |
Establece la lista de control de acceso del sistema (SACL) de la clave. La clave debe tener acceso ACCESS_SYSTEM_SECURITY . La manera adecuada de obtener este acceso es habilitar el SE_SECURITY_NAME privilegio en el token de acceso actual del autor de la llamada, abrir el identificador de ACCESS_SYSTEM_SECURITY acceso y, a continuación, deshabilitar el privilegio. |
psd
Puntero a una estructura SECURITY_DESCRIPTOR
que especifica los atributos de seguridad que se van a establecer para la clave especificada.
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Establece los atributos de seguridad de la clave. Consulte RegSetKeySecurity
para obtener más detalles.
CRegKey::SetMultiStringValue
Llame a este método para establecer el valor de cadena múltiple de la clave del Registro.
LONG SetMultiStringValue(LPCTSTR pszValueName, LPCTSTR pszValue) throw();
Parámetros
pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.
pszValue
Puntero a los datos de cadena múltiple que se van a almacenar con el nombre de valor especificado. Una cadena múltiple es una matriz de cadenas terminadas en NULL
y terminada por dos caracteres NULL.
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Este método usa RegSetValueEx
para escribir el valor en el Registro.
CRegKey::SetQWORDValue
Llame a este método para establecer el valor QWORD
de la clave del Registro.
LONG SetQWORDValue(LPCTSTR pszValueName, ULONGLONG qwValue) throw();
Parámetros
pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.
qwValue
Datos de tipo QWORD
que se van a almacenar con el nombre de valor especificado.
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Este método usa RegSetValueEx
para escribir el valor en el Registro.
CRegKey::SetStringValue
Llame a este método para establecer el valor de cadena de la clave del Registro.
LONG SetStringValue(
LPCTSTR pszValueName,
LPCTSTR pszValue,
DWORD dwType = REG_SZ) throw();
Parámetros
pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no existe un valor con este nombre, el método lo agrega a la clave.
pszValue
Puntero a los datos de cadena que se van a almacenar con el nombre de valor especificado.
dwType
Tipo de la cadena que se va a escribir en el Registro: REG_SZ
(valor predeterminado) o REG_EXPAND_SZ
(para cadenas múltiples).
Valor devuelto
Si el método se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS
. Si se produce un error en el método, el valor devuelto es un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Este método usa RegSetValueEx
para escribir el valor en el Registro.
CRegKey::SetValue
Llame a este método para almacenar datos en el campo de valor especificado de m_hKey
. Las versiones anteriores de este método ya no se admiten y se marcan como 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);
Parámetros
pszValueName
Puntero a una cadena que contiene el nombre del valor que se va a establecer. Si aún no está presente en la clave un valor con este nombre, el método lo agrega a la clave. Si pszValueName
es NULL
o una cadena vacía, ""
, el método establece el tipo y los datos del valor predeterminado o sin nombre de la clave.
dwType
Especifica un código que indica el tipo de datos al que apunta el parámetro pValue
.
pValue
Puntero a un búfer que contiene los datos que se van a almacenar con el nombre de valor especificado.
nBytes
Especifica el tamaño, en bytes, de la información a la que apunta el parámetro pValue
. Si los datos son de tipo REG_SZ
, REG_EXPAND_SZ
o REG_MULTI_SZ
, nBytes
debe incluir el tamaño del carácter nulo de terminación.
hKeyParent
Manipulador de una clave abierta.
lpszKeyName
Especifica el nombre de una clave que se va a crear o abrir. Este nombre debe ser una subclave de hKeyParent
.
lpszValue
Especifica los datos que se van a almacenar. Este parámetro debe ser distinto de NULL
.
lpszValueName
Especifica el campo de valor que se va a establecer. Si aún no existe un campo de valor con este nombre en la clave, se agrega.
dwValue
Especifica los datos que se van a almacenar.
bMulti
Si es false, indica que la cadena es de tipo REG_SZ
. Si es true, indica que la cadena es una cadena múltiple de tipo REG_MULTI_SZ
.
nValueLen
Si bMulti
es true, nValueLen
es la longitud de la cadena lpszValue
en caracteres. Si bMulti
es false, un valor de -1 indica que el método calculará la longitud automáticamente.
Valor devuelto
Si se ejecuta correctamente, devuelve ERROR_SUCCESS
; de lo contrario, devuelve un código de error distinto de cero definido en WINERROR.H
.
Comentarios
Las dos versiones originales de SetValue
se marcan como ATL_DEPRECATED
y ya no se deben usar. El compilador emitirá una advertencia si se usan estas formas.
El tercer método llama a RegSetValueEx
.